static int cmd_eraseflash_run (urj_chain_t *chain, char *params[]) { long unsigned adr = 0; long unsigned number = 0; if (urj_cmd_params (params) != 3) { urj_error_set (URJ_ERROR_SYNTAX, "%s: #parameters should be %d, not %d", params[0], 3, urj_cmd_params (params)); return URJ_STATUS_FAIL; } if (urj_cmd_test_cable (chain) != URJ_STATUS_OK) return URJ_STATUS_FAIL; if (!urj_bus) { urj_error_set (URJ_ERROR_ILLEGAL_STATE, _("Bus driver missing")); return URJ_STATUS_FAIL; } if (urj_cmd_get_number (params[1], &adr) != URJ_STATUS_OK) return URJ_STATUS_FAIL; if (urj_cmd_get_number (params[2], &number) != URJ_STATUS_OK) return URJ_STATUS_FAIL; return urj_flasherase (urj_bus, adr, number); }
static int cmd_flashmem_run (urj_chain_t *chain, char *params[]) { int msbin; int noverify = 0; long unsigned adr = 0; FILE *f; int paramc = urj_cmd_params (params); int r; if (paramc < 3) { urj_error_set (URJ_ERROR_SYNTAX, "%s: #parameters should be >= %d, not %d", params[0], 3, urj_cmd_params (params)); return URJ_STATUS_FAIL; } if (!urj_bus) { urj_error_set (URJ_ERROR_ILLEGAL_STATE, _("Bus driver missing")); return URJ_STATUS_FAIL; } msbin = strcasecmp ("msbin", params[1]) == 0; if (!msbin && urj_cmd_get_number (params[1], &adr) != URJ_STATUS_OK) return URJ_STATUS_FAIL; if (paramc > 3) noverify = strcasecmp ("noverify", params[3]) == 0; else noverify = 0; f = fopen (params[2], "rb"); if (!f) { urj_error_IO_set (_("Unable to open file `%s'"), params[2]); return URJ_STATUS_FAIL; } if (msbin) r = urj_flashmsbin (urj_bus, f, noverify); else r = urj_flashmem (urj_bus, f, adr, noverify); fclose (f); return r; }
static int cmd_set_run (urj_chain_t *chain, char *params[]) { int dir; long unsigned data = 0; urj_part_signal_t *s; urj_part_t *part; if (urj_cmd_params (params) < 4 || urj_cmd_params (params) > 5) { urj_error_set (URJ_ERROR_SYNTAX, "%s: #parameters should be 4 or 5, not %d", params[0], urj_cmd_params (params)); return URJ_STATUS_FAIL; } if (strcasecmp (params[1], "signal") != 0) { urj_error_set (URJ_ERROR_SYNTAX, "%s: second parameter must be '%s'", params[0], params[1]); return URJ_STATUS_FAIL; } if (urj_cmd_test_cable (chain) != URJ_STATUS_OK) return URJ_STATUS_FAIL; part = urj_tap_chain_active_part (chain); if (part == NULL) return URJ_STATUS_FAIL; /* direction */ if (strcasecmp (params[3], "in") != 0 && strcasecmp (params[3], "out") != 0) { urj_error_set (URJ_ERROR_SYNTAX, "%s: DIR parameter must be 'in' or 'out', not '%s'", params[0], params[3]); return URJ_STATUS_FAIL; } dir = (strcasecmp (params[3], "in") == 0) ? 0 : 1; if (dir) { if (urj_cmd_get_number (params[4], &data) != URJ_STATUS_OK) return URJ_STATUS_FAIL; if (data > 1) { urj_error_set (URJ_ERROR_SYNTAX, "%s: DATA parameter must be '0' or '1', not '%s'", params[0], params[4]); return URJ_STATUS_FAIL; } } s = urj_part_find_signal (part, params[2]); if (!s) { urj_error_set (URJ_ERROR_NOTFOUND, _("signal '%s' not found"), params[2]); return URJ_STATUS_FAIL; } return urj_part_set_signal (part, s, dir, data); }