int uavcannode_start(int argc, char *argv[]) { resources("Before board_app_initialize"); board_app_initialize(NULL); resources("After board_app_initialize"); // CAN bitrate int32_t bitrate = 0; // Node ID int32_t node_id = 0; // Did the bootloader auto baud and get a node ID Allocated bootloader_app_shared_t shared; int valid = bootloader_app_shared_read(&shared, BootLoader); if (valid == 0) { bitrate = shared.bus_speed; node_id = shared.node_id; // Invalidate to prevent deja vu bootloader_app_shared_invalidate(); } else { // Node ID (void)param_get(param_find("CANNODE_NODE_ID"), &node_id); (void)param_get(param_find("CANNODE_BITRATE"), &bitrate); } if (node_id < 0 || node_id > uavcan::NodeID::Max || !uavcan::NodeID(node_id).isUnicast()) { warnx("Invalid Node ID %i", node_id); ::exit(1); } // Start warnx("Node ID %u, bitrate %u", node_id, bitrate); int rv = UavcanNode::start(node_id, bitrate); resources("After UavcanNode::start"); ::sleep(1); return rv; }
static int uavcannode_start() { board_app_initialize(); // CAN bitrate int32_t bitrate = 0; // Node ID int32_t node_id = 0; // Did the bootloader auto baud and get a node ID Allocated bootloader_app_shared_t shared; int valid = bootloader_app_shared_read(&shared, BootLoader); if (valid == 0) { bitrate = shared.bus_speed; node_id = shared.node_id; // Invalidate to prevent deja vu bootloader_app_shared_invalidate(); } else { TODO(Need non vol Paramter sotrage) // Node ID node_id = 123; bitrate = 1000000; } if (node_id < 0 || node_id > uavcan::NodeID::Max || !uavcan::NodeID(node_id).isUnicast()) { PX4_INFO("Invalid Node ID %li", node_id); return 1; } // Start PX4_INFO("Node ID %lu, bitrate %lu", node_id, bitrate); return UavcanNode::start(node_id, bitrate); }