| 398 | */ |
| 399 | |
| 400 | char* RCSwitch::getCodeWordD(char sGroup, int nDevice, boolean bStatus){ |
| 401 | static char sReturn[13]; |
| 402 | int nReturnPos = 0; |
| 403 | |
| 404 | // Building 4 bits address |
| 405 | // (Potential problem if dec2binWcharfill not returning correct string) |
| 406 | char *sGroupCode; |
| 407 | switch(sGroup){ |
| 408 | case 'a': |
| 409 | case 'A': |
| 410 | sGroupCode = dec2binWcharfill(8, 4, 'F'); break; |
| 411 | case 'b': |
| 412 | case 'B': |
| 413 | sGroupCode = dec2binWcharfill(4, 4, 'F'); break; |
| 414 | case 'c': |
| 415 | case 'C': |
| 416 | sGroupCode = dec2binWcharfill(2, 4, 'F'); break; |
| 417 | case 'd': |
| 418 | case 'D': |
| 419 | sGroupCode = dec2binWcharfill(1, 4, 'F'); break; |
| 420 | default: |
| 421 | sReturn[0] = '\0'; |
| 422 | return sReturn; |
| 423 | |
| 424 | } |
| 425 | |
| 426 | for (int i = 0; i<4; i++) { |
| 427 | sReturn[nReturnPos++] = sGroupCode[i]; |
| 428 | } |
| 429 | |
| 430 | |
| 431 | // Building 3 bits address |
| 432 | // (Potential problem if dec2binWcharfill not returning correct string) |
| 433 | char *sDevice; |
| 434 | switch(nDevice) { |
| 435 | case 1: |
| 436 | sDevice = dec2binWcharfill(4, 3, 'F'); break; |
| 437 | case 2: |
| 438 | sDevice = dec2binWcharfill(2, 3, 'F'); break; |
| 439 | case 3: |
| 440 | sDevice = dec2binWcharfill(1, 3, 'F'); break; |
| 441 | default: |
| 442 | sReturn[0] = '\0'; |
| 443 | return sReturn; |
| 444 | } |
| 445 | |
| 446 | for (int i = 0; i<3; i++) |
| 447 | sReturn[nReturnPos++] = sDevice[i]; |
| 448 | |
| 449 | // fill up rest with zeros |
| 450 | for (int i = 0; i<5; i++) |
| 451 | sReturn[nReturnPos++] = '0'; |
| 452 | |
| 453 | // encode on or off |
| 454 | if (bStatus) |
| 455 | sReturn[10] = '1'; |
| 456 | else |
| 457 | sReturn[11] = '1'; |