Beispiel #1
0
uint8_t * db_js_lookup(const char * model, const char * jstag)
{
	struct db_dev_model * mdl;
	struct cmd_list * lst;
	struct db_info * inf;
	int tagid;
	int nmid;
	int idx;
	int j;

	if ((inf = db_info_get()) == NULL)
		return NULL;

	DCC_LOG(LOG_TRACE, "1. str_lookup()");

	if ((tagid = str_lookup(jstag, strlen(jstag))) < 0) {
		DCC_LOG(LOG_WARNING, "tag not found!");
		return NULL;
	}	

	DCC_LOG(LOG_TRACE, "2. str_lookup()");

	if ((nmid = str_lookup(model, strlen(model))) < 0) {
		DCC_LOG(LOG_WARNING, "model name not found!");
		return NULL;
	}	

	DCC_LOG(LOG_TRACE, "3. db_dev_model_index_by_name()");

	idx = db_dev_model_index_by_name(inf, nmid);

	if ((mdl = db_dev_model_by_index(inf, idx)) == NULL) {
		DCC_LOG(LOG_WARNING, "device not found!");
		return NULL;
	}

	if ((lst = mdl->cmd) == NULL) {
		DCC_LOG(LOG_WARNING, "command list empty!");
		return NULL;
	}

	DCC_LOG(LOG_TRACE, "4. lookup...");

	for (j = 0; j < lst->cnt; ++j) {
		struct cmd_entry * cmd = &lst->cmd[j];
		if (cmd->tag == tagid)
			return cmd->code;
	}

	DCC_LOG(LOG_WARNING, "command not found!");
	return NULL;
} 
Beispiel #2
0
static int shell_pw_sel(FILE * f, int argc, char ** argv, int n)
{
	struct db_dev_model * mod;
	struct ss_device * dev;
	int addr;
	int sel;

	if (argc < 3)
		return SHELL_ERR_ARG_MISSING;

	addr = strtoul(argv[1], NULL, 0);
	if (addr > 160)
		return SHELL_ERR_ARG_INVALID;

	sel = strtoul(argv[2], NULL, 0);
	if (sel > 16)
		return SHELL_ERR_ARG_INVALID;

	dev = sensor(addr);

	if ((mod = db_dev_model_by_index(db_info_get(), dev->model)) == NULL)
		return SHELL_ERR_ARG_INVALID;

	switch (n) { 
	case 1:
		dev->pw1 = device_db_pw_lookup(mod->pw1, sel);
		break;
	case 2:
		dev->pw2 = device_db_pw_lookup(mod->pw2, sel);
		break;
	case 3:
		dev->pw3 = device_db_pw_lookup(mod->pw3, sel);
		break;
	case 4:
		dev->pw4 = device_db_pw_lookup(mod->pw4, sel);
		break;
	case 5:
		dev->pw5 = device_db_pw_lookup(mod->pw5, sel);
		break;
	}

	return 0;
}