char *pigpio_error(int errnum) { if (errnum > -1000) return cmdErrStr(errnum); else { switch(errnum) { case pigif_bad_send: return "failed to send to pigpiod"; case pigif_bad_recv: return "failed to receive from pigpiod"; case pigif_bad_getaddrinfo: return "failed to find address of pigpiod"; case pigif_bad_connect: return "failed to connect to pigpiod"; case pigif_bad_socket: return "failed to create socket"; case pigif_bad_noib: return "failed to open noib"; case pigif_duplicate_callback: return "identical callback exists"; case pigif_bad_malloc: return "failed to malloc"; case pigif_bad_callback: return "bad callback parameter"; case pigif_notify_failed: return "failed to create notification thread"; case pigif_callback_not_found: return "callback not found"; default: return "unknown error"; } } }
void print_result(int sock, int rv, cmdCmd_t cmd) { int i, r; uint32_t *p; r = cmd.res; switch (rv) { case 0: case 1: if (r < 0) { printf("%d\n", r); fatal("ERROR: %s", cmdErrStr(r)); } break; case 2: printf("%d\n", r); if (r < 0) fatal("ERROR: %s", cmdErrStr(r)); break; case 3: printf("%08X\n", cmd.res); break; case 4: printf("%u\n", cmd.res); break; case 5: printf(cmdUsage); break; case 6: /* I2CPK I2CRD I2CRI I2CRK SERR SLR SPIX SPIR */ printf("%d", r); if (r < 0) fatal("ERROR: %s", cmdErrStr(r)); if (r > 0) { for (i=0; i<r; i++) { printf(" %hhu", response_buf[i]); } } printf("\n"); break; case 7: /* PROCP */ if (r != (4 + (4*PI_MAX_SCRIPT_PARAMS))) { printf("%d", r); fatal("ERROR: %s", cmdErrStr(r)); } else { p = (uint32_t *)response_buf; printf("%d", p[0]); for (i=0; i<PI_MAX_SCRIPT_PARAMS; i++) { printf(" %d", p[i+1]); } } printf("\n"); break; } }
void print_result(int sock, int rv, cmdCmd_t cmd) { int i, r, ch; uint32_t *p; r = cmd.res; switch (rv) { case 0: case 1: if (r < 0) { printf("%d\n", r); fatal("ERROR: %s", cmdErrStr(r)); } break; case 2: printf("%d\n", r); if (r < 0) fatal("ERROR: %s", cmdErrStr(r)); break; case 3: printf("%08X\n", cmd.res); break; case 4: printf("%u\n", cmd.res); break; case 5: printf("%s", cmdUsage); break; case 6: /* BI2CZ CF2 FL FR I2CPK I2CRD I2CRI I2CRK I2CZ SERR SLR SPIX SPIR */ printf("%d", r); if (r < 0) fatal("ERROR: %s", cmdErrStr(r)); if (r > 0) { if (printFlags == PRINT_ASCII) printf(" "); for (i=0; i<r; i++) { ch = response_buf[i]; if (printFlags & PRINT_HEX) printf(" %hhx", ch); else if (printFlags & PRINT_ASCII) { if (isprint(ch) || (ch == '\n') || (ch == '\r')) printf("%c", ch); else printf("\\x%02hhx", ch); } else printf(" %hhu", response_buf[i]); } } printf("\n"); break; case 7: /* PROCP */ if (r != (4 + (4*PI_MAX_SCRIPT_PARAMS))) { printf("%d", r); fatal("ERROR: %s", cmdErrStr(r)); } else { p = (uint32_t *)response_buf; printf("%d", p[0]); for (i=0; i<PI_MAX_SCRIPT_PARAMS; i++) { printf(" %d", p[i+1]); } } printf("\n"); break; case 8: /* BSCX */ if (r < 0) { printf("%d", r); fatal("ERROR: %s", cmdErrStr(r)); } p = (uint32_t *)response_buf; printf("%d %d", r-3, p[0]); if (r > 4) { if (printFlags == PRINT_ASCII) printf(" "); for (i=4; i<r; i++) { ch = response_buf[i]; if (printFlags & PRINT_HEX) printf(" %hhx", ch); else if (printFlags & PRINT_ASCII) { if (isprint(ch) || (ch == '\n') || (ch == '\r')) printf("%c", ch); else printf("\\x%02hhx", ch); } else printf(" %hhu", response_buf[i]); } } printf("\n"); break; } }