390 likes | 521 Views
ADC Components. AttrMag. MainC. AttrGlobal. AttrAccel. TinyAlloc. TinyDBAttr. TimerC. AttrVoltage. RandomLPSR. AttrPhoto. HistóricoM. AttrTemp. NetworkC. TupleRouterM. AttrPot. PotC. DBBufferC. Tuple. AggOperator. GenericComm. Selperator. QueryResult. Query. ParsedQuery.
E N D
ADC Components AttrMag MainC AttrGlobal AttrAccel TinyAlloc TinyDBAttr TimerC AttrVoltage RandomLPSR AttrPhoto HistóricoM AttrTemp NetworkC TupleRouterM AttrPot PotC DBBufferC Tuple AggOperator GenericComm Selperator QueryResult Query ParsedQuery
ADC Components AttrMag MainC AttrGlobal AttrAccel TinyAlloc TinyDBAttr TimerC AttrVoltage RandomLPSR AttrPhoto AttrTemp NetworkC TupleRouterM AttrPot PotC DBBufferC Tuple AggOperator GenericComm Selperator Query QueryResult ParsedQuery
ADMINISTRADOR DE HISTÓRICO IAdministraciónH 1 *
TimerC ADC Components NetworkC fired() RadioQueue TupleRouterM RAM DBBufferC EEPROM
… ¿Atributo sin dato? Sí No ¿El atributo corresponde al histórico? No Sí Insertar valor en el histórico Fin
Epoch Arribo de resultados hijos 1.1 Identificar consultas 1.6: ¿Agregar? No 1.2: Muestrear datos 1.3: Llenar tuplas Sí 1.4: ¿Agregar? No Sí 1.7: Operador de agregación 1.5: Operador de selección D
Epoch Arribo de resultados hijos 1.1 Identificar consultas 1.6: ¿Agregar? No 1.2: Muestrear datos 1.3: Llenar tuplase insertar en histórico Sí 1.4: ¿Agregar? No Sí 1.7: Operador de agregación 1.5: Operador de selección D
Nuevo mensaje de consulta Arribo de mensaje de consulta ¿Identificador distinto de cero? ¿Todos los mensajes? No Sí Encender variable de control No Sí ¿Todos los mensajes? No Crear representación compacta de consulta Crear tupla de resultado Sí Crear representación compacta de consulta Fin Fin
… ¿Agregar? ¿Variable de control? ¿Idle?
… 1.3: Llenar tuplas e insertar en Histórico 1.4: ¿Agregar? No Sí 1.5: Operador de selección 1.7: Operador de agregación 1.6: ¿Radio? Sí No 2.1 ¿idle? epoch Sí Enviar No
Inicio Inicio Slots llenos Slots libres Siguiente libre Siguiente ocupado Slots libres Slots llenos Siguiente lleno Siguiente libre Slots llenos Slots libres
Evento de reloj Procesar consultas Entrega de tuplas Arribo resultados hijos Muestrear datos ¿Agregar? No Sí ¿Agregar? No Llenar tupla Operador de Selección Operador de Agregación ¿Radio? Sí No No Guardar EEPROM ¿Idle? Sí Enviar
Epoch 1. Procesar consultas 2. Entrega de tuplas
D 2.1 ¿Radio? Sí No No 2.3 ¿Idle? 2.2 Guardar EEPROM Sí 2.4 Enviar Epoch
D 2.1 ¿Radio? 2.3 ¿Agregación? Sí No No Sí 2.5 ¿Variable de control? 2.2 Guardar EEPROM Sí No 2.4 ¿Idle? Sí No 2.6 Enviar Epoch
Evento de reloj Procesar consultas Entrega de tuplas Arribo resultados hijos Muestrear datos ¿Agregar? No Sí ¿Agregar? No Llenar tupla Operador de Agregación Operador de Selección S
Evento de reloj Procesar consultas Entrega de tuplas Arribo resultados hijos Muestrear ¿Agregar? No Sí ¿Agregar? No Llenar tupla Operador de Selección Operador de Agregación ¿Radio? Sí No No Guardar EEPROM/RAM ¿Idle? Sí Enviar
Nueva inserción ¿Grano == 1?
Estación central QB 2 Luz QB 1 QB 3 Luz Luz
ADMINISTRADOR DE HISTÓRICO IAdministraciónH
Epoch B.1 ¿Consulta dispara ahora? ¿Resultados hijos? Por cada consulta Fin A.2: Muestrear datos A.3: Llenar tuplas No ¿Agregar? ¿Agregar? Sí C.1: Operador de agregación C: ¿Agregar? No Sí C.2: Operador de selección D.1: ¿Radio? F: ¿Idle? No Sí Guardar EEPROM/RAM No Sí Enviar
uint8_t qid; //1 uint8_t numFields; //2 uint16_t epochDuration uint16_t clocksPerSample; int16_t clockCount; //11 bool hasAgg:1; // -- are thereaggregates in thisquery charbufferType; //seeBuffer.h:BufferType //25 uint8_t bufferId; //26 -- output buffer id
Red de sensores Persistencia Recolector Aplicación
1 1 * 1
* 1 1 * * * 1
* 1 1 * 1 1.. 65535
1 * 1 * 1 1 * 1 * 1 * 1 *
1 * 1 * 1 1 * 1 * 1 * 1 *
* 1 1 1 * * 1 * 1 *
TupleRouterM QueryProcessor AttrGlobal TimerC TinyAlloc StdControl TinyDBAttr Tuple Selperator RadioQueue NetworkC RandomLPSR AggOperator ParsedQuery QueryResult Query DBBufferC
NetworkC ParsedQuery Tuple TupleRouterM Query newMessage() queryMessage() crear() query crear() crear() tuple parsedQuery
Tuple TimerC TinyDBAttr SelOperator TupleRouterM newEpoch() a: muestrear() iniciado { a.Ejecución = por cada atributo} dato b: llenarAtributo() { b.Ejecución = por cada atributo} llenado procesarTupla() procesada
NetworkC TimerC TinyDBAttr Tuple AggOperator TupleRouterM newEpoch() a: muestrear() { a.Ejecución = por cada atributo} dato b: llenarAtributo() { b.Ejecución = por cada atributo} llenado procesarTupla() newResult() recibido agregar() procesada
TimerC QueryResult DBBuffer NetworkC TupleRouterM newEpoch() crear() iniciado() creado encolar() transmitir() transmitido transmitido endOfEpoch() terminado