Exemple #1
0
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";
      }
   }
}
Exemple #2
0
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;

   }
}