void mavlink_init(void) { unsigned char i; /* register serial port clients */ for (i = 0; i < MAVLINK_COMM_NUM_BUFFERS; i++) { memset(&mavlink_uart_clients[i], 0, sizeof(struct uart_client)); mavlink_uart_clients[i].id = UART_CLIENT_MAVLINK; mavlink_uart_clients[i].ch = i; mavlink_uart_clients[i].init = mavlink_set_active_channels; mavlink_uart_clients[i].close = mavlink_unset_active_channels; mavlink_uart_clients[i].read = mavlink_receive; uart_add_client(&mavlink_uart_clients[i]); } /* register module parameters */ params_add(params_mavlink); /* heartbeat timer */ add_timer(TIMER_ALWAYS, 10, mav_heartbeat, NULL); /* parameter request handlers */ add_mavlink_callback_sysid(MAV_SYS_ID_ANY, MAVLINK_MSG_ID_PARAM_REQUEST_LIST, mav_param_request_list, CALLBACK_PERSISTENT, NULL); add_mavlink_callback_sysid(MAV_SYS_ID_ANY, MAVLINK_MSG_ID_PARAM_REQUEST_READ, mav_param_request_read, CALLBACK_PERSISTENT, NULL); add_mavlink_callback_sysid(MAV_SYS_ID_ANY, MAVLINK_MSG_ID_PARAM_SET, mav_param_set, CALLBACK_PERSISTENT, NULL); //add_mavlink_callback(MAVLINK_MSG_ID_HEARTBEAT, mav_heartbeat_cbk, CALLBACK_PERSISTENT, NULL); //add_mavlink_callback(MAVLINK_MSG_ID_COMMAND_ACK, mav_cmd_ack, CALLBACK_PERSISTENT, NULL); }
inline struct mavlink_callback* add_mavlink_callback(unsigned char msgid, void *cbk, unsigned char ctype, void *data) { return add_mavlink_callback_sysid(config.mav.uav_sysid, msgid, cbk, ctype, data); }