int Mavlink::mavlink_dev_ioctl(struct file *filep, int cmd, unsigned long arg) { switch (cmd) { case (int)MAVLINK_IOC_SEND_TEXT_INFO: case (int)MAVLINK_IOC_SEND_TEXT_CRITICAL: case (int)MAVLINK_IOC_SEND_TEXT_EMERGENCY: { const char *txt = (const char *)arg; // printf("logmsg: %s\n", txt); struct mavlink_logmessage msg; strncpy(msg.text, txt, sizeof(msg.text)); msg.severity = (unsigned char)cmd; Mavlink *inst; LL_FOREACH(_mavlink_instances, inst) { if (!inst->_task_should_exit) { mavlink_logbuffer_write(&inst->_logbuffer, &msg); inst->_total_counter++; } } return OK; } default: return ENOTTY; } }
void Mavlink::send_statustext(unsigned char severity, const char *string) { struct mavlink_logmessage logmsg; strncpy(logmsg.text, string, sizeof(logmsg.text)); logmsg.severity = severity; mavlink_logbuffer_write(&_logbuffer, &logmsg); }
int Mavlink::ioctl(device::file_t *filp, int cmd, unsigned long arg) { switch (cmd) { case (int)MAVLINK_IOC_SEND_TEXT_INFO: case (int)MAVLINK_IOC_SEND_TEXT_CRITICAL: case (int)MAVLINK_IOC_SEND_TEXT_EMERGENCY: { const char *txt = (const char *)arg; struct mavlink_logmessage msg; strncpy(msg.text, txt, sizeof(msg.text)); switch (cmd) { case MAVLINK_IOC_SEND_TEXT_INFO: msg.severity = MAV_SEVERITY_INFO; break; case MAVLINK_IOC_SEND_TEXT_CRITICAL: msg.severity = MAV_SEVERITY_CRITICAL; break; case MAVLINK_IOC_SEND_TEXT_EMERGENCY: msg.severity = MAV_SEVERITY_EMERGENCY; break; default: msg.severity = MAV_SEVERITY_INFO; break; } Mavlink *inst; LL_FOREACH(_mavlink_instances, inst) { if (!inst->_task_should_exit) { mavlink_logbuffer_write(&inst->_logbuffer, &msg); inst->_total_counter++; } } return OK; } default: return ENOTTY; } }
static int mavlink_dev_ioctl(struct file *filep, int cmd, unsigned long arg) { static unsigned int total_counter = 0; switch (cmd) { case (int)MAVLINK_IOC_SEND_TEXT_INFO: case (int)MAVLINK_IOC_SEND_TEXT_CRITICAL: case (int)MAVLINK_IOC_SEND_TEXT_EMERGENCY: { const char *txt = (const char *)arg; struct mavlink_logmessage msg; strncpy(msg.text, txt, sizeof(msg.text)); mavlink_logbuffer_write(&lb, &msg); total_counter++; return OK; } default: return ENOTTY; } }