• No results found

”Dette er den beste måten å

In document NORSK ORTOPEDPOST mars 2017 (sider 27-31)

Nesta secção apresentam-se as principais estruturas de dados que ajudaram a conceção dos casos de uso. Dada a complexidade de alguns casos de uso e do problema a modelar, foi necessário recorrer a estas estruturas de dados “conceptuais” para descrever corretamente alguns casos de uso.

• D1 (packet) – Um pacote recebido

A estrutura packet armazena os dados de um pacote recebido de um AP e inclui o identificador do pacote (PACK_ID), o identificador do AP que enviou o pacote (AP_ID), o identificador da etiqueta RFID que está na origem do pacote (TAG_ID), a potência do sinal RF recebido no AP (RSSI_RX), a data (DATE) e hora (TIME) da receção desse sinal RF no AP. Esta estrutura é preenchida com os dados provenientes do caso de uso “Receber pacote de AP por TCP/IP”.

Figura 15 - Estrutura de dados packet que guarda um pacote recebido.

• D2 (APdata) – Dados dum AP

• D6 (listAPs) – Lista com dados dos vários APs

A estrutura APdata é uma espécie de configuração dos APs, pois para cada AP inclui o seu identificador (AP_ID), a localização (AP_X, AP_Y e AP_Z), a descrição (AP_DESCRIPTION), o conjunto de APs em que está inserido (AP_SET) e o endereço TCPIP atribuído ao AP (TCPIP). Em dado momento o AP_SET pode não estar definido. A estrutura APdata é preenchida com os dados referentes ao caso de uso “Operação sobre AP”.

A estrutura listAPs é simplesmente a lista com os dados de todos os APs, ou seja, é uma lista de elementos APdata. Esta tabela será eficientemente implementada com a classe HashMap<AP_IDx,APdatax>. Esta estrutura D2 é preenchida com os dados provenientes do caso de uso “Operação sobre AP”.

Figura 17 - Estrutura de dados listAPs que guardam os conjuntos de APdata.

• D7 (setAPs) – Conjunto de APs

• D3 (listSetAPs) – Lista com os conjuntos de APs

A estrutura listSetAPs guarda a composição dos vários conjuntos de APs (setAPs) a colocar em cada ponto estratégico do edifício. Em princípio cada conjunto terá uma cardinalidade de 3 APs, de forma a permitir efetuar a localização de etiquetas RFID por um método de triangulação. Para cada conjunto, identificado pelo seu identificador (SET_ID), a tabela guarda a lista com a identificação dos vários APs desse conjunto (AP_IDi, AP_IDj, AP_IDk). As estruturas setAPs e listSetAPs são preenchidas com os dados provenientes do caso de uso “Operação sobre Conjuntos de APs”.

• D4 (EtiquetaRFID) – Dados duma etiqueta RFID

• D4L (listaEtiquetaRFID) – Lista com os dados das várias etiquetas RFID A estrutura listaEtiquetaRFID é simplesmente a lista com todas as etiquetas RFID (EtiquetaRFID). Esta tabela será eficientemente implementada com a classe List<EtiquetaRFID>, onde cada classe EtiquetaRFID inclui o identificador da etiqueta RFID (ID_TAG), a indicação se está ativa ou não (Activa) e uma referência que pode ser usada para descrever o tipo de etiqueta (Referencia).

Figura 19 - Estruturas de dados EtiquetaRFID e listaEtiquetaRFID que guardam os dados das etiquetas RFID.

• D5 (PacksLastPosTAG) – Lista de pacotes relativos à última posição de cada TAG

Para cada etiqueta RFID t, a estrutura PacksLastPosTAG permite guardar os pacotes mais recentes relativos à localização dessa etiqueta t e que foram recebidos por APs pertencentes ao mesmo conjunto de APs. Quando a deteção de uma etiqueta muda de um conjunto para outro, a lista de pacotes mais recentes é limpa.

Para estimar a localização duma etiqueta, num dado instante T, com base em pacotes relativos a um dado conjunto de APs, os 3 pacotes a usar são os que apresentem um tempo de chegada mais próximo de T. Os 3 pacotes têm que se enquadrar ainda num intervalo [-δT,+δT] em relação ao tempo T (ver o Anexo IV), em que δT pode ser da ordem de 2 segundos. Um pacote usado permanece

proveniente do mesmo AP. Com esta abordagem tenta-se minimizar os problemas causados pela receção assíncrona de pacotes nos vários APs. Esta estrutura é preenchida com os dados provenientes do caso de uso “Calcular localização duma TAG”.

Figura 20 - Estrutura de dados PacksLastPosTAG que guarda a lista de pacotes relativos à última posição de cada etiqueta RFID.

• D8 (Segment) – Segmento

• D8L (listSegments) – Lista de segmentos

A estrutura Segment (D8), que guarda os dados dum segmento/parede do edifício, é definida pelos dois pontos extremos do segmento (POINTi e POINTf) e pela direção (DIRECTION). A direção é calculada com base nos dois pontos anteriores. Cada ponto (classe POINT) inclui as coordenadas X, Y e Z. Esta estrutura é preenchida com os dados provenientes do caso de uso “Definir segmentos”. A estrutura listSegments (D8L) é simplesmente uma lista com todos os segmentos definidos. Esta estrutura será eficientemente implementada com a classe HashMap<S_id,Segment>.

Figura 21 - Estruturas de dados Segment e listSegments.

• D9 (Zone) – Zona do edifício

• D9L (listZones) – Lista de zonas do edifício

A estrutura Zone (D9), que guarda a geometria duma zona/espaço do edifício, é definida pelo conjunto de segmentos que delimitam essa zona.O valor mínimo do número de segmentos duma zona é 3, definindo dessa forma uma zona triangular. A estrutura Zone é preenchida com os dados provenientes do caso de uso “Definir zonas”. Por sua vez, a estrutura listZones (D9L) é a lista com todas as zonas definidas para o edifício. Esta estrutura será eficientemente implementada com a classe HashMap<Z_id,Zone>.

Figura 22 - Estruturas de dados Zone e listZones utilizadas para guardar a geometria das zonas do edifício.

• D10 (UserOfTag) – Lista de etiquetas atribuídas aos utilizadores

A estrutura de dados UserOfTag é simplesmente uma lista onde se regista a associação entre cada etiqueta RFID e os dados do utilizador a quem foi atribuída. Esta estrutura será eficientemente implementada com a classe HashMap<tagID,userData>, em que a chave é o identificador da etiqueta RFID (tagID) e o valor contém os dados do utilizador: identificador do utilizador (userId), o tipo de utilizador (userType) e uma descrição do utilizador (userDescripion).

In document NORSK ORTOPEDPOST mars 2017 (sider 27-31)