Пример #1
0
void InterMcuEvent(void (*frame_handler)(void))
{
  uint8_t i, c;

  // Check if there are messages in the device
  if (intermcu.device->char_available(intermcu.device->periph)) {
    while (intermcu.device->char_available(intermcu.device->periph) && !intermcu.transport.trans_rx.msg_received) {
      c = intermcu.device->get_byte(intermcu.device->periph);
      parse_pprz(&intermcu.transport, c);

#ifdef BOARD_PX4IO
      // TODO: create a hook
      checkPx4RebootCommand(c);
#endif
    }

    // If we have a message copy it
    if (intermcu.transport.trans_rx.msg_received) {
      for (i = 0; i < intermcu.transport.trans_rx.payload_len; i++) {
        imcu_msg_buf[i] = intermcu.transport.trans_rx.payload[i];
      }

      intermcu.msg_available = true;
      intermcu.transport.trans_rx.msg_received = false;
    }
  }

  if (intermcu.msg_available) {
    intermcu_parse_msg(frame_handler);
    intermcu.msg_available = false;
  }
}
Пример #2
0
void InterMcuEvent(void (*frame_handler)(void))
{

    /* Parse incoming bytes */
    if (intermcu_device->char_available(intermcu_device->periph)) {
        while (intermcu_device->char_available(intermcu_device->periph) && !intermcu_transport.trans_rx.msg_received) {
            unsigned char b = intermcu_device->get_byte(intermcu_device->periph);
#ifdef BOARD_PX4IO
            checkPx4RebootCommand(b);
#endif
            parse_pprz(&intermcu_transport, b);
        }

        if (intermcu_transport.trans_rx.msg_received) {
            intermcu_parse_msg(&(intermcu_transport.trans_rx), frame_handler);
        }
    }
}