Anton Boyt / Mbed 2 deprecated VPU

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Package.cpp Source File

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 }