summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/iap.c49
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
221static 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
221static void iap_handlepkt_mode0(void) 228static 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
498static 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
495static void iap_handlepkt_mode4(void) 506static 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 }