libusbp_error * libusbp_device_get_serial_number( const libusbp_device * device, char ** serial_number) { if (serial_number == NULL) { return error_create("Serial number output pointer is null."); } *serial_number = NULL; if (device == NULL) { return error_create("Device is null."); } libusbp_error * error = NULL; if (error == NULL && strlen(device->device_instance_id) < 22) { error = error_create("Device instance ID is too short."); } if (error == NULL) { error = string_copy(device->device_instance_id + 22, serial_number); } if (error != NULL) { error = error_add(error, "Failed to get serial number."); } return error; }
static void page_db_add_error(PageDB *db, const char *message) { error_add(db->error, message); }
u08 cmd_parse(u08 len, const char *cmd) { u08 status; switch(cmd[0]) { // ----- v) version ----- case 'v': uart_send_string("plip2slip " VERSION); uart_send_crlf(); return SER_PARSE_CMD_OK; // ----- x) exit ----- case 'x': return SER_PARSE_CMD_EXIT; // ----- s) stats ----- case 's': if(len==1) { // show stats stats_dump(); return SER_PARSE_CMD_OK; } else { switch(cmd[1]) { case 'r': // stats reset stats_reset(); return SER_PARSE_CMD_OK; default: return SER_PARSE_CMD_UNKNOWN; } } // ----- b) bench ----- case 'b': bench_dump(); return SER_PARSE_CMD_OK; // ----- p) param ----- case 'p': if(len==1) { // show params param_dump(); return SER_PARSE_CMD_OK; } else { switch(cmd[1]) { case 's': // param save status = param_save(); return (status == PARAM_OK) ? SER_PARSE_CMD_OK : SER_PARSE_CMD_FAIL; case 'l': // param load status = param_load(); return (status == PARAM_OK) ? SER_PARSE_CMD_OK : SER_PARSE_CMD_FAIL; case 'r': // param reset param_reset(); return SER_PARSE_CMD_OK; default: return SER_PARSE_CMD_UNKNOWN; } } return SER_PARSE_CMD_UNKNOWN; // ----- m) mode ----- case 'm': if(len==2) { u08 value; status = parse_nybble(cmd[1],&value); if(!status || (value >= PARAM_MODE_TOTAL_NUMBER)) { return SER_PARSE_CMD_FAIL; } param.mode = value; return SER_PARSE_CMD_OK; } return SER_PARSE_CMD_UNKNOWN; // ----- f) fake_tx ----- case 'f': if(len==2) { u08 value; status = parse_nybble(cmd[1],&value); if(!status) { return SER_PARSE_CMD_FAIL; } param.fake_tx = value ? 1 : 0; return SER_PARSE_CMD_OK; } return SER_PARSE_CMD_UNKNOWN; // ----- l) log ----- case 'l': if(len==1) { // show log log_dump(); return SER_PARSE_CMD_OK; } else { switch(cmd[1]) { case 'r': // reset log log_init(); return SER_PARSE_CMD_OK; default: return SER_PARSE_CMD_UNKNOWN; } } return SER_PARSE_CMD_UNKNOWN; // ----- e) error sim ----- case 'e': if(len==2) { u08 value; status = parse_nybble(cmd[1],&value); if(!status) { return SER_PARSE_CMD_FAIL; } for(u08 i=0;i<value;i++) { error_add(); } return SER_PARSE_CMD_OK; } else { error_add(); } return SER_PARSE_CMD_OK; // unknown command default: return SER_PARSE_CMD_UNKNOWN; } }
static void freq_scheduler_add_error(FreqScheduler *sch, const char *message) { error_add(sch->error, message); }
static void page_rank_scorer_add_error(PageRankScorer *prs, const char *message) { error_add(prs->error, message); }