Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.72 KB | None | 0 0
  1. static void Isw5010da_initialize__(Isw5010da_t *pThis) {
  2. uint32_t snr;
  3. g_parallelSnrNums = 2;
  4. pThis->snr = Sys_readSerialNumberFromFlash() & 0xFFFFFUL;
  5. dwIndoorFunctionKey_t indoorFunctionKey = DWINDOOR_FUNCTIONKEY_NONE;
  6. DeviceParam_initialize(DEVICEPARAM_SNR_OWN, pThis->snr);
  7. DeviceParam_initialize(DEVICEPARAM_INFO_CLASS, DEVICE_CLASS_INDOOR_HANDSFREE);
  8.  
  9. /*ModularBus parameters*/
  10. DeviceParam_initialize(DEVICEPARAM_INFO_MODULARBUS_TYPE, 0x02);
  11. DeviceParam_initialize(DEVICEPARAM_INFO_MODULARBUS_SUBTYPE, 0x02);
  12. DeviceParam_initialize(DEVICEPARAM_INFO_MODULARBUS_SPECIAL_PARAMETER, 0x00);
  13. DeviceParam_initialize(DEVICEPARAM_INFO_MODULARBUS_VERSION, 0x0E);
  14. DeviceParam_initialize(DEVICEPARAM_SNR_MODULARBUS, pThis->snr & 0xFFFFFUL);
  15.  
  16. /*Eeprom location 0x00*/
  17. DeviceParam_initialize(DEVICEPARAM_INFO_ID_CODE, (pThis->eeprom.buffer[0] & 0xF0) >> 4);
  18. DeviceParam_initialize(DEVICEPARAM_INFO_HW_VERSION, DEVICE_HW_VERSION);
  19. DeviceParam_initialize(DEVICEPARAM_INFO_FW_VERSION, DEVICE_FW_VERSION);
  20.  
  21. /*EEPROM locatio 0x02*/
  22. /*Eeprom location 0x03 lower nibble and locations 0x04, 0x05*/
  23. snr = convert3BytesBigEndianTo32Bit(&pThis->eeprom.buffer[0x03]) & 0xFFFFFUL;
  24. DeviceParam_initialize(DEVICEPARAM_COMM_REDIRECTION_OUT_SNR, snr);
  25. DeviceParam_initialize(DEVICEPARAM_INDOOR_INTERNAL_CALL_SNR, snr);
  26.  
  27. /*Eeprom location 0x06 lower nibble and locations 0x07, 0x08*/
  28. snr = convert3BytesBigEndianTo32Bit(&pThis->eeprom.buffer[0x06]) & 0xFFFFFUL;
  29. DeviceParam_initialize(DEVICEPARAM_SNR_PARALLEL_2, snr);
  30.  
  31. /*Eeprom location 0x09 lower nibble and locations 0x0A, 0x0B*/
  32. snr = convert3BytesBigEndianTo32Bit(&pThis->eeprom.buffer[0x09]) & 0xFFFFFUL;
  33. DeviceParam_initialize(DEVICEPARAM_SNR_PARALLEL_1, snr);
  34.  
  35. /*Eeprom location 0x0C bit 0*/
  36. DeviceState_initialize(DEVICESTATE_RINGER_SUPPRESSED,
  37. GET_BIT(pThis->eeprom.buffer[0x0C], 0) == 1 ? TRUE : FALSE);
  38.  
  39. /*Eeprom location 0x0C bit 1*/
  40.  
  41. /*Eeprom location 0x0D higher nibble*/
  42. switch ((pThis->eeprom.buffer[0x0D] & 0x30)) {
  43. case 0x00: { /* control function */
  44. indoorFunctionKey = DWINDOOR_FUNCTIONKEY_CONTROL_FUNCTION;
  45. break;
  46. }
  47. case 0x10: { /* door automatic */
  48. DeviceState_initialize(DEVICESTATE_COMM_REDIRECTION_OUT_ACTIVE, FALSE);
  49. indoorFunctionKey = DWINDOOR_FUNCTIONKEY_DOOR_AUTOMATIC;
  50. DeviceState_initialize(DEVICESTATE_COMM_DOOR_AUTOMATIC_ACTIVE,
  51. GET_BIT(pThis->eeprom.buffer[0x0C], 1) == 1 ? TRUE : FALSE);
  52. if (GET_BIT(pThis->eeprom.buffer[0x0C], 1) == 1) {
  53. LedManager_passEvent_setLedOn(LED_TOE);
  54. } else {
  55. LedManager_passEvent_setLedOff(LED_TOE);
  56. }
  57. break;
  58. }
  59. case 0x20: { /* redirection */
  60. DeviceState_initialize(DEVICESTATE_COMM_DOOR_AUTOMATIC_ACTIVE, FALSE);
  61. indoorFunctionKey = DWINDOOR_FUNCTIONKEY_REDIRECTION;
  62. DeviceState_initialize(DEVICESTATE_COMM_REDIRECTION_OUT_ACTIVE,
  63. GET_BIT(pThis->eeprom.buffer[0x0C], 1) == 1 ? TRUE : FALSE);
  64. break;
  65. }
  66. case 0x30: { /* internal call */
  67. indoorFunctionKey = DWINDOOR_FUNCTIONKEY_INTERNAL_CALL;
  68. break;
  69. }
  70. default: {
  71. break;
  72. }
  73. }
  74. switch ((pThis->eeprom.buffer[0x0D] & 0x06) >> 1) {
  75. case 0x00: {
  76. pThis->lightFunction = LIGHT_FUNC;
  77. g_parallelSnrNums = 2;
  78. break;
  79. }
  80. case 0x01: {
  81. pThis->lightFunction = CONTROL_FUNC_9;
  82. g_parallelSnrNums = 2;
  83. break;
  84. }
  85. case 0x02: {
  86. pThis->lightFunction = INTERN_CALL_FUNC;
  87. g_parallelSnrNums = 1;
  88. break;
  89. }
  90. default: {
  91. pThis->lightFunction = LIGHT_FUNC;
  92. g_parallelSnrNums = 2;
  93. }
  94. }
  95. pThis->intCall2Snr = convert3BytesBigEndianTo32Bit(&pThis->eeprom.buffer[0x06]) & 0xFFFFFUL;
  96.  
  97. DeviceParam_initialize(DEVICEPARAM_INDOOR_FUNCTIONKEY, indoorFunctionKey);
  98.  
  99. /*eeprom address 0x0F*/
  100. DeviceState_initialize(DEVICESTATE_COMM_FLATDOOR_OPENER_ENABLED,
  101. GET_BIT(pThis->eeprom.buffer[0x0F], 0) == 1 ? TRUE : FALSE);
  102. DeviceParam_initialize(DEVICEPARAM_COMM_MANUAL_TALKING_DIRECTION, /*when TRUE no handsfree mode available*/
  103. GET_BIT(pThis->eeprom.buffer[0x0F], 3) == 0 ? FALSE : TRUE);
  104. DeviceParam_initialize(DEVICEPARAM_INDOOR_AUTO_ANSWER_INTERNAL_CALL,
  105. GET_BIT(pThis->eeprom.buffer[0x0F], 4) == 1 ? TRUE : FALSE);
  106. DeviceParam_initialize(DEVICEPARAM_INDOOR_RINGTONE_ADJUSTMENT_LOCK,
  107. GET_BIT(pThis->eeprom.buffer[0x0F], 5) == 1 ? TRUE : FALSE);
  108. DeviceParam_initialize(DEVICEPARAM_INDOOR_RINGTONE_SUPPRESSION_LOCK,
  109. GET_BIT(pThis->eeprom.buffer[0x0F], 6) == 1 ? TRUE : FALSE);
  110. pThis->ambSwitchLock = GET_BIT(pThis->eeprom.buffer[0x0F], 7) == 1 ? TRUE: FALSE;
  111.  
  112. /*Eeprom locations 0x011, 0x12, 0x13*/
  113. /*Eeprom location 0x14*/
  114. DeviceParam_initialize(DEVICEPARAM_RINGER_LOUDNESS, pThis->eeprom.buffer[0x14] & 0x07);
  115. pThis->ringtoneLoudness = pThis->eeprom.buffer[0x14] & 0x07;
  116. pThis->prevRingtoneLoudness = pThis->ringtoneLoudness;
  117.  
  118. /*Eeprom location 0x15*/
  119. pThis->speechLoudnessOut = pThis->eeprom.buffer[0x15] & 0x07;
  120. pThis->prevSpeechLoudness = pThis->speechLoudness;
  121. DeviceParam_initialize(DEVICEPARAM_AUDIO_OUTDOOR_SPEECH_LOUDNESS,
  122. pThis->speechLoudnessOut);
  123.  
  124. if (GET_BIT(pThis->eeprom.buffer[0x17], 2) == 1) { /* speech loudness separation */
  125. pThis->speechLoudnessIn = (pThis->eeprom.buffer[0x15] & 0x70) >> 4;
  126. DeviceParam_initialize(DEVICEPARAM_AUDIO_INDOOR_SPEECH_LOUDNESS,
  127. pThis->speechLoudnessIn);
  128. pThis->inOutLoudnessSeparation = TRUE;
  129. } else {
  130. pThis->speechLoudnessIn = pThis->speechLoudnessOut;
  131. /* same loudness for indoor and outdoor speech */
  132. DeviceParam_initialize(DEVICEPARAM_AUDIO_INDOOR_SPEECH_LOUDNESS,
  133. pThis->speechLoudnessIn);
  134. pThis->inOutLoudnessSeparation = FALSE;
  135. }
  136. /*Eeprom location 0x16*/
  137. DeviceParam_initialize(DEVICEPARAM_RINGER_OUTDOOR_BORDER_ADDRESS,
  138. pThis->eeprom.buffer[0x16] & 0x3F);
  139.  
  140. /*Eeprom location 0x17 bit 0*/
  141. DeviceParam_initialize(DEVICEPARAM_COMM_TALK_TIME_LIMIT,
  142. (GET_BIT(pThis->eeprom.buffer[0x17], 0) == 1 ? 0 : 120));
  143. if (GET_BIT (pThis->eeprom.buffer[0x17], 1) == 1) {
  144. if (GET_BIT (pThis->eeprom.buffer[0x17], 3) == 1) {
  145. pThis->ambLedBehavior = STANDARD_OFF_IN_QUIET;
  146. } else {
  147. pThis->ambLedBehavior = ALLWAYS_OFF;
  148. }
  149. LedManager_passEvent_setLedOff(LED_AMB);
  150. } else {
  151. if (GET_BIT (pThis->eeprom.buffer[0x17], 3) == 1) {
  152. pThis->ambLedBehavior = STANDARD_ON_IN_QUIET;
  153. } else {
  154. pThis->ambLedBehavior = ALLWAYS_ON;
  155. }
  156. LedManager_passEvent_setLedOn(LED_AMB);
  157. }
  158.  
  159. if (GET_BIT(pThis->eeprom.buffer[0x17], 4) == 0x01) {
  160. DwComm_passEvent_requestDoorOpenerLong();
  161. pThis->isDoorOpenerLong = TRUE;
  162. } else {
  163. pThis->isDoorOpenerLong = FALSE;
  164. }
  165.  
  166. if (GET_BIT(pThis->eeprom.buffer[0x17], 5) == 0x01) {
  167. DwComm_passEvent_requestDoorAutoDelayed();
  168. pThis->isDoorOpenerDelayed = TRUE;
  169. } else {
  170. pThis->isDoorOpenerDelayed = FALSE;
  171. pThis->doorOpenerDelay = 0;
  172. }
  173.  
  174. /*Eeprom location 0x18*/
  175. DeviceParam_initialize(DEVICEPARAM_RINGER_OUTDOOR_INCALL_1, pThis->eeprom.buffer[0x18]);
  176.  
  177. /*Eeprom location 0x19*/
  178. DeviceParam_initialize(DEVICEPARAM_RINGER_INDOOR_INCALL, pThis->eeprom.buffer[0x19]);
  179.  
  180. /*Eeprom location 0x1A*/
  181. DeviceParam_initialize(DEVICEPARAM_RINGER_FLATDOOR_INCALL, pThis->eeprom.buffer[0x1A]);
  182.  
  183. /*Eeprom location 0x1B*/
  184. if (pThis->eeprom.buffer[0x1B] == 0xFF) {
  185. g_allAsCallsRingSame = TRUE;
  186. DeviceParam_initialize(DEVICEPARAM_RINGER_OUTDOOR_INCALL_2, pThis->eeprom.buffer[0x18]);
  187. } else {
  188. g_allAsCallsRingSame = FALSE;
  189. DeviceParam_initialize(DEVICEPARAM_RINGER_OUTDOOR_INCALL_2, pThis->eeprom.buffer[0x1B]);
  190. }
  191.  
  192. /*Eeprom location 0x1C */
  193. DeviceParam_initialize(DEVICEPARAM_COMM_SEND_CALLER_ID, TRUE);
  194. /*Eeprom location 0x20*/
  195. g_volumeValue = pThis->eeprom.buffer[0x20 + (pThis->eeprom.buffer[0x14] & 0x07)];
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement