Пример #1
0
 private void SyncProtocol(byte sync)
 {
     if (escaped)
     {
         // sync byte despues de escape es error
         serialBufferPtr = 0;
         escaped         = false;
         return;
     }
     if (serialBufferPtr == 0)
     {
         // Inicio de trama
         CopyByteToBuffer(sync);
         return;
     }
     else if (CopyByteToBuffer(sync) >= MIN_FRAME_SIZE)
     {
         // Fin de trama
         SerialPacket pck = new SerialPacket(serialBuffer, serialBufferPtr);
         if (pck.OkCrc())
         {
             RaiseEventFrameArrived(pck);
         }
     }
     serialBufferPtr = 0;
 }
Пример #2
0
        private void onPacketArrived(object sender, SerialPacket pck)
        {
            byte[] packet = pck.GetPacket();
            switch (packet[PACKET_TYPE_OFFSET])
            {
            case SERIAL_PROTO_ACK:
                if (packet[PACKET_SEQNO_OFFSET] == seqNo)
                {
                    StopWaitingACK();
                }
                break;

            case SERIAL_PROTO_PACKET_UNKNOWN: break;

            case SERIAL_PROTO_PACKET_ACK:
            // En este caso, debería enviarse ACK a la mota,
            // pero este tipo de mensaje no esta implementado aún
            // en TinyOS (?)
            case SERIAL_PROTO_PACKET_NOACK:
            default:
                RaiseMessageArrived(new EventArgMessage(RemovePacketHeader(packet)));
                break;
            }
            //Console.Write("\nFRAME: " + BitConverter.ToString(packet, 0, packet.Length) + "\n");
        }
Пример #3
0
        /*
         * Publica un evento pasando el paquete de la trama como argumento a
         * todos los suscriptores
         * del mismo
         */
        protected virtual void RaiseEventFrameArrived(SerialPacket frm)
        {
            EventHandler <SerialPacket> handler = packedArrivedEvent;

            if (handler != null)
            {
                handler(this, frm);
            }
        }
Пример #4
0
 /*
  * Publica un evento pasando el paquete de la trama como argumento a 
  * todos los suscriptores
  * del mismo
  */
 protected virtual void RaiseEventFrameArrived(SerialPacket frm) {
   EventHandler<SerialPacket> handler = packedArrivedEvent;
   if (handler != null) {
     handler(this, frm);
   }
 }
Пример #5
0
 private void SyncProtocol(byte sync) {
   if (escaped) {
     // sync byte despues de escape es error
     serialBufferPtr = 0;
     escaped = false;
     return;
   }
   if (serialBufferPtr == 0) {
     // Inicio de trama
     CopyByteToBuffer(sync);
     return;
   }
   else if (CopyByteToBuffer(sync) >= MIN_FRAME_SIZE) {
     // Fin de trama
     SerialPacket pck = new SerialPacket(serialBuffer, serialBufferPtr);
     if (pck.OkCrc())
       RaiseEventFrameArrived(pck);
   }
   serialBufferPtr = 0;
 }
Пример #6
0
 private void onPacketArrived(object sender, SerialPacket pck) {
   byte[] packet = pck.GetPacket();
   switch (packet[PACKET_TYPE_OFFSET]) {
     case SERIAL_PROTO_ACK:
       if (packet[PACKET_SEQNO_OFFSET] == seqNo) {
         StopWaitingACK();
       }
       break;
     case SERIAL_PROTO_PACKET_UNKNOWN: break;
     case SERIAL_PROTO_PACKET_ACK:
     // En este caso, debería enviarse ACK a la mota, 
     // pero este tipo de mensaje no esta implementado aún
     // en TinyOS (?)
     case SERIAL_PROTO_PACKET_NOACK:
     default:
       RaiseMessageArrived(new EventArgMessage(RemovePacketHeader(packet)));
       break;
   }
   //Console.Write("\nFRAME: " + BitConverter.ToString(packet, 0, packet.Length) + "\n");
 }