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; } }
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) { parse_pprz(&intermcu_transport, intermcu_device->get_byte(intermcu_device->periph)); } if (intermcu_transport.trans_rx.msg_received) { intermcu_parse_msg(&(intermcu_transport.trans_rx), frame_handler); } } }
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); } } }