static void ir_decode(void) { #if IR_RC5_SUPPORT == 1 rc5_decode(); #endif #if IR_RC6_SUPPORT == 1 rc6_decode(); #endif #if IR_NEC_SUPPORT == 1 nec_decode(); #endif #if IR_JVC_SUPPORT == 1 jvc_decode(); #endif #if IR_SONY_SUPPORT == 1 sony_decode(); #endif #if IR_SHARP_SUPPORT == 1 sharp_decode(); #endif #if IR_PACE_SUPPORT == 1 pace_decode(); #endif }
void UTEST_nec() { { int n; int p, i; size_t len; lirc_t BUFF[1024]; lirc_t* in; nec_decode_reset(); len = 0; in = BUFF; n=nec_decode(&in, &len); assert(n == 0); assert(in == BUFF); nec_decode_reset(); p = 0; BUFF[p++] = 2672565; len = p*sizeof(lirc_t); in = BUFF; n = nec_decode(&in, &len); assert(n == 0); assert(in == (BUFF+p)); nec_decode_reset(); p = 0; BUFF[p++] = PULSE_BIT | 576; BUFF[p++] = 514; /*0*/ BUFF[p++] = PULSE_BIT | 583; BUFF[p++] = 1624; /*1*/ BUFF[p++] = 2672565; len = p*sizeof(lirc_t); in = BUFF; n = nec_decode(&in, &len); assert(n == 1); assert(in == (BUFF + p)); assert(strncmp(nec_DECODE_BUFF, "01", nec_DECODE_BUF_IDX) == 0); nec_decode_reset(); p = 0; BUFF[p++] = PULSE_BIT | 576; BUFF[p++] = 514; /*0*/ BUFF[p++] = PULSE_BIT | 583; BUFF[p++] = 1624;/*1*/ BUFF[p++] = PULSE_BIT | 568; BUFF[p++] = 531;/*0*/ BUFF[p++] = PULSE_BIT | 525; BUFF[p++] = 1680;/*1*/ len = p*sizeof(lirc_t); in = BUFF; n = nec_decode(&in, &len); assert(n == 0); assert(in == (BUFF + p)); p = 0; BUFF[p++] = PULSE_BIT | 569; BUFF[p++] = 1634; /*1*/ BUFF[p++] = PULSE_BIT | 598; BUFF[p++] = 1603; /*1*/ BUFF[p++] = PULSE_BIT | 593; BUFF[p++] = 510; /*0*/ BUFF[p++] = 77000; len = p*sizeof(lirc_t); in = BUFF; n = nec_decode(&in, &len); assert(n == 1); assert(in == (BUFF + p)); assert(strncmp(nec_DECODE_BUFF, "0101110", nec_DECODE_BUF_IDX) == 0); nec_decode_reset(); p = 0; BUFF[p++] = 2672565; BUFF[p++] = PULSE_BIT | 8825; BUFF[p++] = 4407; BUFF[p++] = PULSE_BIT | 576; BUFF[p++] = 514; BUFF[p++] = PULSE_BIT | 583; BUFF[p++] = 1624; BUFF[p++] = PULSE_BIT | 568; BUFF[p++] = 531; BUFF[p++] = PULSE_BIT | 525; BUFF[p++] = 1680; BUFF[p++] = PULSE_BIT | 569; BUFF[p++] = 1634; BUFF[p++] = PULSE_BIT | 598; BUFF[p++] = 1603; BUFF[p++] = PULSE_BIT | 593; BUFF[p++] = 510; BUFF[p++] = PULSE_BIT | 558; BUFF[p++] = 1646; BUFF[p++] = PULSE_BIT | 587; BUFF[p++] = 511; BUFF[p++] = PULSE_BIT | 562; BUFF[p++] = 539; BUFF[p++] = PULSE_BIT | 522; BUFF[p++] = 579; BUFF[p++] = PULSE_BIT | 519; BUFF[p++] = 591; BUFF[p++] = PULSE_BIT | 564; BUFF[p++] = 525; BUFF[p++] = PULSE_BIT | 527; BUFF[p++] = 1682; BUFF[p++] = PULSE_BIT | 584; BUFF[p++] = 514; BUFF[p++] = PULSE_BIT | 568; BUFF[p++] = 1639; BUFF[p++] = PULSE_BIT | 592; BUFF[p++] = 1612; BUFF[p++] = PULSE_BIT | 571; BUFF[p++] = 1632; BUFF[p++] = PULSE_BIT | 583; BUFF[p++] = 514; BUFF[p++] = PULSE_BIT | 570; BUFF[p++] = 533; BUFF[p++] = PULSE_BIT | 571; BUFF[p++] = 553; BUFF[p++] = PULSE_BIT | 496; BUFF[p++] = 585; BUFF[p++] = PULSE_BIT | 521; BUFF[p++] = 579; BUFF[p++] = PULSE_BIT | 563; BUFF[p++] = 553; BUFF[p++] = PULSE_BIT | 549; BUFF[p++] = 536; BUFF[p++] = PULSE_BIT | 587; BUFF[p++] = 513; BUFF[p++] = PULSE_BIT | 521; BUFF[p++] = 1686; BUFF[p++] = PULSE_BIT | 567; BUFF[p++] = 1637; BUFF[p++] = PULSE_BIT | 586; BUFF[p++] = 1617; BUFF[p++] = PULSE_BIT | 582; BUFF[p++] = 1621; BUFF[p++] = PULSE_BIT | 657; BUFF[p++] = 1545; BUFF[p++] = PULSE_BIT | 600; BUFF[p++] = 1604; BUFF[p++] = PULSE_BIT | 600; BUFF[p++] = 2672565; BUFF[p++] = PULSE_BIT | 8825; BUFF[p++] = 4407; BUFF[p++] = PULSE_BIT | 576; BUFF[p++] = 514; BUFF[p++] = PULSE_BIT | 583; BUFF[p++] = 1624; BUFF[p++] = PULSE_BIT | 568; BUFF[p++] = 531; BUFF[p++] = PULSE_BIT | 525; BUFF[p++] = 1680; BUFF[p++] = PULSE_BIT | 569; BUFF[p++] = 1634; BUFF[p++] = PULSE_BIT | 598; BUFF[p++] = 1603; BUFF[p++] = PULSE_BIT | 593; BUFF[p++] = 510; BUFF[p++] = PULSE_BIT | 558; BUFF[p++] = 1646; BUFF[p++] = PULSE_BIT | 587; BUFF[p++] = 511; BUFF[p++] = PULSE_BIT | 562; BUFF[p++] = 539; BUFF[p++] = PULSE_BIT | 522; BUFF[p++] = 579; BUFF[p++] = PULSE_BIT | 519; BUFF[p++] = 591; BUFF[p++] = PULSE_BIT | 564; BUFF[p++] = 525; BUFF[p++] = PULSE_BIT | 527; BUFF[p++] = 1682; BUFF[p++] = PULSE_BIT | 584; BUFF[p++] = 514; BUFF[p++] = PULSE_BIT | 568; BUFF[p++] = 1639; BUFF[p++] = PULSE_BIT | 592; BUFF[p++] = 1612; BUFF[p++] = PULSE_BIT | 571; BUFF[p++] = 1632; BUFF[p++] = PULSE_BIT | 583; BUFF[p++] = 514; BUFF[p++] = PULSE_BIT | 570; BUFF[p++] = 533; BUFF[p++] = PULSE_BIT | 571; BUFF[p++] = 553; BUFF[p++] = PULSE_BIT | 496; BUFF[p++] = 585; BUFF[p++] = PULSE_BIT | 521; BUFF[p++] = 579; BUFF[p++] = PULSE_BIT | 563; BUFF[p++] = 553; BUFF[p++] = PULSE_BIT | 549; BUFF[p++] = 536; BUFF[p++] = PULSE_BIT | 587; BUFF[p++] = 513; BUFF[p++] = PULSE_BIT | 521; BUFF[p++] = 1686; BUFF[p++] = PULSE_BIT | 567; BUFF[p++] = 1637; BUFF[p++] = PULSE_BIT | 586; BUFF[p++] = 1617; BUFF[p++] = PULSE_BIT | 582; BUFF[p++] = 1621; BUFF[p++] = PULSE_BIT | 657; BUFF[p++] = 1545; BUFF[p++] = PULSE_BIT | 600; BUFF[p++] = 1604; BUFF[p++] = PULSE_BIT | 600; BUFF[p++] = 2672565; BUFF[p++] = PULSE_BIT | 8825; len = p*sizeof(lirc_t); in = BUFF; i = 0; do { i++; // test no n = nec_decode(&in, &len); switch (i) { case 1: assert(n == 0); assert(in == (BUFF + 1)); break; case 2: assert(n == 0); assert(in == (BUFF + 2)); break; case 3: assert(n == 0); assert(in == (BUFF + 3)); break; case 4: assert(n == 1); assert(strncmp(nec_DECODE_BUFF, "01011101000001011100000000111111", nec_DECODE_BUF_IDX) == 0); break; case 5: case 6: assert(n == 0); break; case 7: assert(n == 1); assert(strncmp(nec_DECODE_BUFF, "01011101000001011100000000111111", nec_DECODE_BUF_IDX) == 0); break; } if (n == 1) nec_decode_reset(); } while (len>0); fprintf(stderr, "nec_decode() -- tests OK\n"); } { lirc_t* out = NULL; size_t n = 0; n = nec_encode("", &out); assert(n == 0); assert(out==NULL); n = nec_encode("1", &out); assert(n == sizeof(lirc_t)*(2*1+2+1)); assert((out[0] == NEC_THEAD_PULSE) && (out[1] == NEC_THEAD_SPACE)); assert((out[2] == NEC_T0) && (out[3] == NEC_T1)); assert(out[4] == NEC_T0); free(out); n = nec_encode("0", &out); assert(n == sizeof(lirc_t)*(2*1+2+1)); assert((out[0] == NEC_THEAD_PULSE) && (out[1] == NEC_THEAD_SPACE)); assert((out[2] == NEC_T0) && (out[3] == NEC_T0)); free(out); n = nec_encode("110", &out); assert(n == sizeof(lirc_t)*(2*3+2+1)); assert((out[0] == NEC_THEAD_PULSE) && (out[1] == NEC_THEAD_SPACE)); assert((out[2] == NEC_T0) && (out[3] == NEC_T1)); assert((out[4] == NEC_T0) && (out[5] == NEC_T1)); assert((out[6] == NEC_T0) && (out[7] == NEC_T0)); free(out); fprintf(stderr, "nec_encode() -- tests OK\n"); } }