diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/iap.c | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/apps/iap.c b/apps/iap.c index 7447c67ba9..48344cd4cc 100644 --- a/apps/iap.c +++ b/apps/iap.c | |||
@@ -218,6 +218,13 @@ static void iap_set_remote_volume(void) | |||
218 | iap_send_pkt(data, sizeof(data)); | 218 | iap_send_pkt(data, sizeof(data)); |
219 | } | 219 | } |
220 | 220 | ||
221 | static void cmd_ok_mode0(unsigned char cmd) | ||
222 | { | ||
223 | unsigned char data[] = {0x00, 0x02, 0x00, 0x13}; | ||
224 | data[3] = cmd; /* respond with cmd */ | ||
225 | iap_send_pkt(data, sizeof(data)); | ||
226 | } | ||
227 | |||
221 | static void iap_handlepkt_mode0(void) | 228 | static void iap_handlepkt_mode0(void) |
222 | { | 229 | { |
223 | unsigned int cmd = serbuf[2]; | 230 | unsigned int cmd = serbuf[2]; |
@@ -260,8 +267,7 @@ static void iap_handlepkt_mode0(void) | |||
260 | 267 | ||
261 | case 0x13: | 268 | case 0x13: |
262 | { | 269 | { |
263 | unsigned char data[] = {0x00, 0x02, 0x00, 0x13}; | 270 | cmd_ok_mode0(cmd); |
264 | iap_send_pkt(data, sizeof(data)); | ||
265 | 271 | ||
266 | if (serbuf[6] == 0x35) | 272 | if (serbuf[6] == 0x35) |
267 | /* FM transmitter sends this: */ | 273 | /* FM transmitter sends this: */ |
@@ -322,8 +328,7 @@ static void iap_handlepkt_mode0(void) | |||
322 | unsigned char data[] = {0x00, 0x02, 0x06, | 328 | unsigned char data[] = {0x00, 0x02, 0x06, |
323 | 0x05, 0x00, 0x00, 0x0B, 0xB8, 0x28}; | 329 | 0x05, 0x00, 0x00, 0x0B, 0xB8, 0x28}; |
324 | iap_send_pkt(data, sizeof(data)); | 330 | iap_send_pkt(data, sizeof(data)); |
325 | unsigned char data2[] = {0x00, 0x02, 0x00, 0x05}; | 331 | cmd_ok_mode0(cmd); |
326 | iap_send_pkt(data2, sizeof(data2)); | ||
327 | break; | 332 | break; |
328 | } | 333 | } |
329 | 334 | ||
@@ -349,9 +354,7 @@ static void iap_handlepkt_mode0(void) | |||
349 | /* default response is with cmd ok packet */ | 354 | /* default response is with cmd ok packet */ |
350 | default: | 355 | default: |
351 | { | 356 | { |
352 | unsigned char data[] = {0x00, 0x02, 0x00, 0x00}; | 357 | cmd_ok_mode0(cmd); |
353 | data[3] = cmd; /* respond with cmd */ | ||
354 | iap_send_pkt(data, sizeof(data)); | ||
355 | break; | 358 | break; |
356 | } | 359 | } |
357 | } | 360 | } |
@@ -492,6 +495,14 @@ static void iap_handlepkt_mode3(void) | |||
492 | } | 495 | } |
493 | } | 496 | } |
494 | 497 | ||
498 | static void cmd_ok_mode4(unsigned int cmd) | ||
499 | { | ||
500 | unsigned char data[] = {0x04, 0x00, 0x01, 0x00, 0x00, 0x00}; | ||
501 | data[4] = (cmd >> 8) & 0xFF; | ||
502 | data[5] = (cmd >> 0) & 0xFF; | ||
503 | iap_send_pkt(data, sizeof(data)); | ||
504 | } | ||
505 | |||
495 | static void iap_handlepkt_mode4(void) | 506 | static void iap_handlepkt_mode4(void) |
496 | { | 507 | { |
497 | unsigned int cmd = (serbuf[2] << 8) | serbuf[3]; | 508 | unsigned int cmd = (serbuf[2] << 8) | serbuf[3]; |
@@ -510,8 +521,7 @@ static void iap_handlepkt_mode4(void) | |||
510 | { | 521 | { |
511 | iap_updateflag = serbuf[4] ? 0 : 1; | 522 | iap_updateflag = serbuf[4] ? 0 : 1; |
512 | /* respond with cmd ok packet */ | 523 | /* respond with cmd ok packet */ |
513 | unsigned char data[] = {0x04, 0x00, 0x01, 0x00, 0x00, 0x0B}; | 524 | cmd_ok_mode4(cmd); |
514 | iap_send_pkt(data, sizeof(data)); | ||
515 | break; | 525 | break; |
516 | } | 526 | } |
517 | /* Get iPod size? */ | 527 | /* Get iPod size? */ |
@@ -634,9 +644,8 @@ static void iap_handlepkt_mode4(void) | |||
634 | case 0x0026: | 644 | case 0x0026: |
635 | { | 645 | { |
636 | iap_pollspeed = serbuf[4] ? 1 : 0; | 646 | iap_pollspeed = serbuf[4] ? 1 : 0; |
637 | /*responsed with cmd ok packet */ | 647 | /*respond with cmd ok packet */ |
638 | unsigned char data[] = {0x04, 0x00, 0x01, 0x00, 0x00, 0x26}; | 648 | cmd_ok_mode4(cmd); |
639 | iap_send_pkt(data, sizeof(data)); | ||
640 | break; | 649 | break; |
641 | } | 650 | } |
642 | /* AiR playback control */ | 651 | /* AiR playback control */ |
@@ -715,8 +724,7 @@ static void iap_handlepkt_mode4(void) | |||
715 | 724 | ||
716 | 725 | ||
717 | /* respond with cmd ok packet */ | 726 | /* respond with cmd ok packet */ |
718 | unsigned char data[] = {0x04, 0x00, 0x01, 0x00, 0x00, 0x2E}; | 727 | cmd_ok_mode4(cmd); |
719 | iap_send_pkt(data, sizeof(data)); | ||
720 | break; | 728 | break; |
721 | } | 729 | } |
722 | /* Get repeat mode */ | 730 | /* Get repeat mode */ |
@@ -751,8 +759,7 @@ static void iap_handlepkt_mode4(void) | |||
751 | } | 759 | } |
752 | 760 | ||
753 | /* respond with cmd ok packet */ | 761 | /* respond with cmd ok packet */ |
754 | unsigned char data[] = {0x04, 0x00, 0x01, 0x00, 0x00, 0x31}; | 762 | cmd_ok_mode4(cmd); |
755 | iap_send_pkt(data, sizeof(data)); | ||
756 | break; | 763 | break; |
757 | } | 764 | } |
758 | /* Get Screen Size */ | 765 | /* Get Screen Size */ |
@@ -790,19 +797,13 @@ static void iap_handlepkt_mode4(void) | |||
790 | audio_resume(); | 797 | audio_resume(); |
791 | 798 | ||
792 | /* respond with cmd ok packet */ | 799 | /* respond with cmd ok packet */ |
793 | unsigned char data[] = {0x04, 0x00, 0x01, 0x00, 0x00, 0x00}; | 800 | cmd_ok_mode4(cmd); |
794 | data[4] = serbuf[2]; | ||
795 | data[5] = serbuf[3]; | ||
796 | iap_send_pkt(data, sizeof(data)); | ||
797 | break; | 801 | break; |
798 | } | 802 | } |
799 | default: | 803 | default: |
800 | { | 804 | { |
801 | /* default response is with cmd ok packet */ | 805 | /* default response is with cmd ok packet */ |
802 | unsigned char data[] = {0x04, 0x00, 0x01, 0x00, 0x00, 0x00}; | 806 | cmd_ok_mode4(cmd); |
803 | data[4] = serbuf[2]; | ||
804 | data[5] = serbuf[3]; | ||
805 | iap_send_pkt(data, sizeof(data)); | ||
806 | break; | 807 | break; |
807 | } | 808 | } |
808 | } | 809 | } |