Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

186 linhas
5.8 KiB

  1. #include "define.h"
  2. #include "AudioConsoleInterface.h"
  3. #include "WiFiCtrl.h"
  4. #include "NetworkProtocol.h"
  5. #include "ProtocolDefs.h"
  6. #include "timer.h"
  7. #include "AudioConsole.h"
  8. #include <stdio.h>
  9. #include "BoardCfg.h"
  10. void AudioConsoleIFExecuteMasterCommand(unsigned char SenderID, unsigned char Command, unsigned char *Data, int DataSize)
  11. {
  12. switch(Command)
  13. {
  14. case AV_RECEIVER_INTERFACE_ACK:
  15. {
  16. break;
  17. }
  18. case AV_RECEIVER_INTERFACE_GENERAL_STATUS_RESPONSE:
  19. {
  20. ONBOARD_LED2_PIN = ~ONBOARD_LED2_PIN;
  21. AVReceiverStatus_t MainZone, Zone2;
  22. // bool MainPwrStatus = false;
  23. // bool MainSleepStatus = false;
  24. // bool IsMute;
  25. // bool DataValid = false;
  26. // bool ReceiverOnline = false;
  27. // bool SyncZones = false;
  28. // float MainVolume = 0.0;
  29. //
  30. // bool Zone2PwrStatus = false;
  31. // bool Zone2SleepStatus = false;
  32. // bool Zone2IsMute;
  33. // bool Zone2DataValid = false;
  34. // bool Zone2ReceiverOnline = false;
  35. // bool Zone2SyncZones = false;
  36. // float Zone2MainVolume = 0.0;
  37. int IntToFloat = 0;
  38. //Main Zone status
  39. MainZone.MainPwrStatus = Data[0];
  40. MainZone.MainSleepStatus = Data[1];
  41. MainZone.MainVolume = Data[5];
  42. MainZone.MainVolume <<= 8;
  43. MainZone.MainVolume += Data[4];
  44. MainZone.MainVolume <<= 8;
  45. MainZone.MainVolume += Data[3];
  46. MainZone.MainVolume <<= 8;
  47. MainZone.MainVolume += Data[2];
  48. // memcpy(&(MainZone.MainVolume),&IntToFloat,4);
  49. MainZone.IsMute = Data[6];
  50. MainZone.DataValid = Data[7];
  51. MainZone.ReceiverOnline = Data[8];
  52. MainZone.SyncZones = Data[9];
  53. //Zone 2 status
  54. IntToFloat = 0;
  55. Zone2.MainPwrStatus = Data[0];
  56. Zone2.MainSleepStatus = Data[1];
  57. Zone2.MainVolume = Data[2];
  58. Zone2.MainVolume <<= 8;
  59. Zone2.MainVolume += Data[3];
  60. Zone2.MainVolume <<= 8;
  61. Zone2.MainVolume += Data[4];
  62. Zone2.MainVolume <<= 8;
  63. Zone2.MainVolume += Data[5];
  64. // IntToFloat = Data[2];
  65. // IntToFloat <<= 8;
  66. // IntToFloat += Data[3];
  67. // IntToFloat <<= 8;
  68. // IntToFloat += Data[4];
  69. // IntToFloat <<= 8;
  70. // IntToFloat += Data[5];
  71. // memcpy(&(Zone2.MainVolume),&IntToFloat,4);
  72. Zone2.IsMute = Data[6];
  73. Zone2.DataValid = Data[7];
  74. Zone2.ReceiverOnline = Data[8];
  75. Zone2.SyncZones = Data[9];
  76. AudioConsoleSetReceiverStatus(&MainZone, &Zone2);
  77. break;
  78. }
  79. case AV_RECEIVER_INTERFACE_SET_MAIN_POWER_RESPONSE:
  80. {
  81. break;
  82. }
  83. case AV_RECEIVER_INTERFACE_SET_ZONE2_RESPONSE:
  84. {
  85. break;
  86. }
  87. case AV_RECEIVER_INTERFACE_SET_MAIN_ZONE_RESPONSE:
  88. {
  89. break;
  90. }
  91. case AV_RECEIVER_INTERFACE_SET_SPEAKERS_RESPONSE:
  92. {
  93. break;
  94. }
  95. case AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_RESPONSE:
  96. {
  97. break;
  98. }
  99. case AV_RECEIVER_INTERFACE_SELECT_SCENE_RESPONSE:
  100. {
  101. break;
  102. }
  103. case AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_RESPONSE:
  104. {
  105. break;
  106. }
  107. case AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_RESPONSE:
  108. {
  109. break;
  110. }
  111. case AV_RECEIVER_INTERFACE_SET_ZONE2_INPUT_RESPONSE:
  112. {
  113. break;
  114. }
  115. case AV_RECEIVER_INTERFACE_SET_SYNC_Z2_WITH_Z1_RESPONSE:
  116. {
  117. break;
  118. }
  119. case ETH_NETWK_DEVICE_INFO_REQUEST:
  120. {
  121. char data[2];
  122. data[0] = ID_AVRECEIVER_CONSOLE_INTERFACE;
  123. data[1] = MY_DEVICE_ADDRESS;
  124. int PayloadSize;
  125. unsigned char *response = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_ETHERNET_VIRTUAL,ETH_NETWK_DEVICE_INFO_RESPONSE, data,2,0, &PayloadSize);
  126. SendAudioInterfaceData((char*)response,PayloadSize);
  127. break;
  128. }
  129. case ETH_NETWK_SET_DEVICE_INFO_ACK:
  130. {
  131. AudioConsoleSetIFConnectionStatus(true);
  132. break;
  133. }
  134. case ETH_NETWK_CONNECTION_REFUSED:
  135. {
  136. break;
  137. }
  138. case AV_RECEIVER_INTERFACE_GENERAL_STATUS_REQUEST:
  139. case AV_RECEIVER_INTERFACE_SET_MAIN_POWER_REQUEST:
  140. case AV_RECEIVER_INTERFACE_SET_ZONE2_REQUEST:
  141. case AV_RECEIVER_INTERFACE_SET_MAIN_ZONE_REQUEST:
  142. case AV_RECEIVER_INTERFACE_SET_SPEAKERS_REQUEST:
  143. case AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_REQUEST:
  144. case AV_RECEIVER_INTERFACE_SELECT_SCENE_REQUEST:
  145. case AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_REQUEST:
  146. case AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_REQUEST:
  147. case AV_RECEIVER_INTERFACE_SET_ZONE2_INPUT_REQUEST:
  148. case AV_RECEIVER_INTERFACE_SET_SYNC_Z2_WITH_Z1_REQUEST:
  149. default:
  150. {
  151. }
  152. }
  153. }
  154. void AudioConsoleSendCommand(int Command, unsigned char *Data, unsigned int DataSize)
  155. {
  156. unsigned char *Payload;
  157. unsigned int PayloadSize;
  158. Payload = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_AVRECEIVER_CONSOLE_INTERFACE,Command,Data,DataSize,0,&PayloadSize);
  159. SendAudioInterfaceData((char*)Payload,PayloadSize);
  160. }