Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Package.cpp
00001 00002 #include "mbed.h" 00003 #include "Package.h" 00004 00005 00006 00007 FUNCTION_RETURN CheckMarker(PACKAGE_I2C_RX package) 00008 { 00009 if (package.data.marker == DEFAULT_MARKER || 00010 package.data.marker == INIT_MARKER || 00011 package.data.marker == TEST_BLINK_MARKER) 00012 { 00013 if (package.data.marker == TEST_BLINK_MARKER) 00014 { 00015 return FUNCTION_TESTBLINK; 00016 } 00017 return FUNCTION_SUCCESS; 00018 } 00019 return FUNCTION_ERROR; 00020 } 00021 00022 FUNCTION_RETURN CheckGroups(PACKAGE_I2C_RX package) 00023 { 00024 if (package.data.group1 <= CONTROL_GROUP_MAX && package.data.group2 <= CONTROL_GROUP_MAX) 00025 { 00026 return FUNCTION_SUCCESS; 00027 } 00028 return FUNCTION_ERROR; 00029 } 00030 00031 BYTE PCKG_CheckSum(BYTE *pByte,int Size) 00032 { 00033 BYTE Sum = 0; 00034 int i; 00035 for (i=0;i<Size-1;i++) 00036 { 00037 Sum ^= (*pByte); 00038 pByte++; 00039 } 00040 return Sum; 00041 } 00042 00043 FUNCTION_RETURN PCKG_Check(PACKAGE_I2C_RX package) 00044 { 00045 BYTE Sum = 0; 00046 FUNCTION_RETURN Result = CheckMarker(package); 00047 if (IsFunctionError(Result)) return FUNCTION_ERROR; 00048 00049 Result = CheckGroups(package); 00050 if (IsFunctionError(Result)) return FUNCTION_ERROR; 00051 00052 Sum = PCKG_CheckSum(package.bytes,I2C_SIZEBUF_RX); 00053 if (Sum != package.data.checkSum) return FUNCTION_ERROR; 00054 00055 return Result; 00056 } 00057 00058 // Возврат true если пакеты одинаковые 00059 COMPARE_STATE ComparePackages(PACKAGE_I2C_RX package1,PACKAGE_I2C_RX package2) 00060 { 00061 int Err = 0; 00062 int i; 00063 for (i=0;i<I2C_SIZEBUF_RX;i++) 00064 { 00065 if (package1.bytes[i] != package2.bytes[i]) 00066 { 00067 Err++; 00068 } 00069 } 00070 00071 if (Err) return NOT_EQUAL; 00072 return EQUAL; 00073 } 00074 00075 00076 void PCKG_ControlBlink(PACKAGE_I2C_RX *pPackageTest) 00077 { 00078 //SWITCH_STATE Res = SWITCH_NONE; 00079 //static PACKAGE_I2C_RX packageTest = {0}; 00080 00081 //if (pInfo->controlChange == CHANGECONTROL_ACTIVE) 00082 00083 if (pPackageTest->data.group1 >= GREEN_FLASH) //CONTROL_GROUP_MAX) 00084 { 00085 pPackageTest->data.group1 = GREEN;//OFF; 00086 } 00087 else 00088 { 00089 //pPackageTest->data.group1=pPackageTest->data.group1+1; 00090 } 00091 00092 return; 00093 } 00094 00095 00096 SWITCH_STATE PCKG_LightLamp(PACKAGE_I2C_RX *pPackage,PACKAGE_INFO *pInfo) 00097 { 00098 static PACKAGE_I2C_RX packageSave = { 00099 0 00100 }; 00101 SWITCH_STATE Res = SWITCH_NONE; 00102 00103 switch (pPackage->data.group1) 00104 { 00105 case OFF: 00106 { 00107 LED_RED1_OFF; 00108 LED_YELLOW1_OFF; 00109 LED_GREEN1_OFF; 00110 LED_OUTPUT1_OFF; 00111 //pInfo->flashGroup1 = FLASH_LIGHT_OFF; 00112 } break; 00113 00114 case RED_AMBER: 00115 { 00116 LED_RED1_ON; 00117 LED_YELLOW1_ON; 00118 LED_GREEN1_OFF; 00119 LED_OUTPUT1_OFF; 00120 //pInfo->flashGroup1 = FLASH_LIGHT_OFF; 00121 } break; 00122 00123 case RED: 00124 { 00125 LED_RED1_ON; 00126 LED_YELLOW1_OFF; 00127 LED_GREEN1_OFF; 00128 LED_OUTPUT1_OFF; 00129 //pInfo->flashGroup1 = FLASH_LIGHT_OFF; 00130 } break; 00131 00132 case GREEN: 00133 { 00134 LED_RED1_OFF; 00135 LED_YELLOW1_OFF; 00136 LED_GREEN1_ON; 00137 LED_OUTPUT1_OFF; 00138 //pInfo->flashGroup1 = FLASH_LIGHT_OFF; 00139 } break; 00140 00141 case GREEN_FLASH: 00142 { 00143 LED_RED1_OFF; 00144 LED_YELLOW1_OFF; 00145 if (pInfo->flashGroup1 == FLASH_LIGHT_ON) LED_GREEN1_ON; 00146 else LED_GREEN1_OFF; 00147 LED_OUTPUT1_OFF; 00148 } break; 00149 00150 case AMBER: 00151 { 00152 LED_RED1_OFF; 00153 LED_YELLOW1_ON; 00154 LED_GREEN1_OFF; 00155 LED_OUTPUT1_OFF; 00156 //pInfo->flashGroup1 = FLASH_LIGHT_OFF; 00157 } break; 00158 00159 case AMBER_FLASH: 00160 { 00161 LED_RED1_OFF; 00162 if (pInfo->flashGroup1 == FLASH_LIGHT_ON) LED_YELLOW1_ON; 00163 else LED_YELLOW1_OFF; 00164 LED_GREEN1_OFF; 00165 LED_OUTPUT1_OFF; 00166 } break; 00167 00168 case ARROW_RED_AMBER: 00169 { 00170 00171 } break; 00172 00173 case ARROW_RED: 00174 { 00175 } break; 00176 00177 case ARROW_GREEN: 00178 { 00179 } break; 00180 00181 case ARROW_GREEN_FLASH: 00182 { 00183 } break; 00184 00185 case ARROW_AMBER: 00186 { 00187 } break; 00188 00189 case ARROW_AMBER_FLASH: 00190 { 00191 } break; 00192 00193 case ARROW_FLASH_RED_AMBER: 00194 { 00195 } break; 00196 00197 case ARROW_FLASH_RED: 00198 { 00199 } break; 00200 00201 case ARROW_FLASH_GREEN: 00202 { 00203 } break; 00204 00205 case ARROW_FLASH_GREEN_FLASH: 00206 { 00207 } break; 00208 00209 case ARROW_FLASH_AMBER: 00210 { 00211 } break; 00212 00213 case ARROW_FLASH_AMBER_FLASH: 00214 { 00215 } break; 00216 } 00217 00218 switch(pPackage->data.group2) 00219 { 00220 case OFF: 00221 { 00222 LED_RED2_OFF; 00223 LED_YELLOW2_OFF; 00224 LED_GREEN2_OFF; 00225 LED_OUTPUT2_OFF; 00226 pInfo->flashGroup2 = FLASH_LIGHT_OFF; 00227 } break; 00228 00229 case RED_AMBER: 00230 { 00231 LED_RED2_ON; 00232 LED_YELLOW2_ON; 00233 LED_GREEN2_OFF; 00234 LED_OUTPUT2_OFF; 00235 pInfo->flashGroup2 = FLASH_LIGHT_OFF; 00236 } break; 00237 00238 case RED: 00239 { 00240 LED_RED2_ON; 00241 LED_YELLOW2_OFF; 00242 LED_GREEN2_OFF; 00243 LED_OUTPUT2_OFF; 00244 pInfo->flashGroup2 = FLASH_LIGHT_OFF; 00245 } break; 00246 00247 case GREEN: 00248 { 00249 LED_RED2_OFF; 00250 LED_YELLOW2_OFF; 00251 LED_GREEN2_ON; 00252 LED_OUTPUT2_OFF; 00253 pInfo->flashGroup2 = FLASH_LIGHT_OFF; 00254 } break; 00255 00256 case GREEN_FLASH: 00257 { 00258 LED_RED2_OFF; 00259 LED_YELLOW2_OFF; 00260 if (pInfo->flashGroup2 == FLASH_LIGHT_ON) LED_GREEN2_ON; 00261 else LED_GREEN2_OFF; 00262 LED_OUTPUT2_OFF; 00263 } break; 00264 00265 case AMBER: 00266 { 00267 LED_RED2_OFF; 00268 LED_YELLOW2_ON; 00269 LED_GREEN2_OFF; 00270 LED_OUTPUT2_OFF; 00271 pInfo->flashGroup2 = FLASH_LIGHT_OFF; 00272 } break; 00273 00274 case AMBER_FLASH: 00275 { 00276 LED_RED2_OFF; 00277 if (pInfo->flashGroup2 == FLASH_LIGHT_ON) LED_YELLOW2_ON; 00278 else LED_YELLOW2_OFF; 00279 LED_GREEN2_OFF; 00280 LED_OUTPUT2_OFF; 00281 } break; 00282 00283 case ARROW_RED_AMBER: 00284 { 00285 00286 } break; 00287 00288 case ARROW_RED: 00289 { 00290 } break; 00291 00292 case ARROW_GREEN: 00293 { 00294 } break; 00295 00296 case ARROW_GREEN_FLASH: 00297 { 00298 } break; 00299 00300 case ARROW_AMBER: 00301 { 00302 } break; 00303 00304 case ARROW_AMBER_FLASH: 00305 { 00306 } break; 00307 00308 case ARROW_FLASH_RED_AMBER: 00309 { 00310 } break; 00311 00312 case ARROW_FLASH_RED: 00313 { 00314 } break; 00315 00316 case ARROW_FLASH_GREEN: 00317 { 00318 } break; 00319 00320 case ARROW_FLASH_GREEN_FLASH: 00321 { 00322 } break; 00323 00324 case ARROW_FLASH_AMBER: 00325 { 00326 } break; 00327 00328 case ARROW_FLASH_AMBER_FLASH: 00329 { 00330 } break; 00331 } 00332 00333 // Если произошло переключение 00334 if (ComparePackages(packageSave,*pPackage) == NOT_EQUAL) 00335 { 00336 Res = SWITCH_ACTIVE; 00337 } 00338 00339 packageSave = *pPackage; 00340 return Res; 00341 }
Generated on Sat Jul 16 2022 02:08:22 by
