コード例 #1
0
ファイル: uavcan_node.cpp プロジェクト: EATtomatoes/px4esc
int init()
{
	int remained_attempts = 5;

	while (true) {
		int can_res = can.init(config_get("can_bitrate"));
		if (can_res >= 0) {
			::lowsyslog("UAVCAN: CAN bitrate %u bps\n", unsigned(config_get("can_bitrate")));
			break;
		}

		::lowsyslog("UAVCAN: CAN init failed [%i], trying default bitrate...\n", can_res);

		auto descr = ::config_param();
		(void)config_get_descr("can_bitrate", &descr);

		can_res = can.init(descr.default_);
		if (can_res >= 0) {
			::lowsyslog("UAVCAN: CAN bitrate %u bps\n", unsigned(descr.default_));
			break;
		}

		remained_attempts--;
		if (remained_attempts <= 0) {
			::lowsyslog("UAVCAN: CAN driver init failure: %i\n", can_res);
			return -1;
		}

		::usleep(100000);
	}

	(void)node_thread.start((HIGHPRIO + NORMALPRIO) / 2);

	return 0;
}
コード例 #2
0
ファイル: console.c プロジェクト: hsteinhaus/px4esc
static int print_param(const char* name, bool verbose)
{
	static int _max_name_len;
	if (_max_name_len == 0) {
		for (int i = 0;; i++) {
			const char* nm = config_name_by_index(i);
			if (!nm)
				break;
			int len = strlen(nm);
			if (len > _max_name_len)
				_max_name_len = len;
		}
	}

	struct config_param par;
	const int res = config_get_descr(name, &par);
	if (res)
		return res;

	if (par.type == CONFIG_TYPE_FLOAT) {
		lowsyslog("%-*s = %-12f", _max_name_len, name, config_get(name));
		if (verbose) {
			lowsyslog("[%f, %f] (%f)", par.min, par.max, par.default_);
		}
	} else {
		lowsyslog("%-*s = %-12i", _max_name_len, name, (int)config_get(name));
		if (verbose) {
			lowsyslog("[%i, %i] (%i)", (int)par.min, (int)par.max, (int)par.default_);
		}
	}
	puts("");
	return 0;
}