diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2019-03-21 16:43:18 +0200 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2019-03-21 16:43:18 +0200 |
| commit | c73929a0e75705cdb8adbbdb45ea017e3bb09374 (patch) | |
| tree | 9df7c0a3880a031e44c7896fd588b370367f9035 /Software/Embedded_SW/Embedded/Common/SWUpdate | |
| parent | 977d88f94cfb192d09f0253aaf3442f2c17e60f2 (diff) | |
| parent | 5881b11e25a34acc0230f5316db5783389afe18f (diff) | |
| download | Tango-c73929a0e75705cdb8adbbdb45ea017e3bb09374.tar.gz Tango-c73929a0e75705cdb8adbbdb45ea017e3bb09374.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c | 74 |
1 files changed, 68 insertions, 6 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index c66300b7e..456c30290 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -22,7 +22,50 @@ #include <Communication/PMR/FirmwareUpgrade/VersionPackageDescriptor.pb-c.h> #include "drivers/FPGA/Full_Vme/FPGA_Programming_Up.h" +#include "drivers/FPGA/Full_Vme/ispvme/vmopcode.h" +#include "Common/Utilities/Utils.h" + #include "Common/SWUpdate/FileSystem.h" +#include "Modules/Control/Control.h" + +int NumberOfFiles = 0,CurrentRunningFile; +int CurrentFileSize = 0; +uint32_t ActivateVersionControlId = 0xFF; +char activateString[100]; +char ActivateToken[36+1]={0}; +bool Reboot = false; + +uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) +{ + ActivateVersionResponse response = ACTIVATE_VERSION_RESPONSE__INIT; + MessageContainer responseContainer; + + usnprintf(activateString, 1000, "file %d of %d bytes %d of %d",CurrentRunningFile,NumberOfFiles,vme_index,CurrentFileSize); + + Report(activateString,__FILE__,__LINE__,(int)CurrentRunningFile,RpWarning,CurrentFileSize,0); + + if (CurrentRunningFile<NumberOfFiles) + return OK; + if (SafeRemoveControlCallback(ActivateVersionControlId, ActivateVersionCallBackFunction )==OK) + ActivateVersionControlId = 0xFF; + else + LOG_ERROR(255,"ActivateVersionCallBackFunction"); + return OK; + + /* + responseContainer = createContainer(MESSAGE_TYPE__ActivateVersionResponse, ActivateToken, false, &response, &activate_version_response__pack, &activate_version_response__get_packed_size); + responseContainer.continuous = true; + uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); + size_t container_size = message_container__pack(&responseContainer, container_buffer); + my_free(responseContainer.data.data); + SendChars(container_buffer, container_size); + + if (Reboot == true) + { + Power_Reset(); + } +*/ +} uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) { @@ -31,8 +74,12 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) char SWUpgradePath[100]; char FullPath[50]; FRESULT Fresult = FR_OK; + FILINFO* fno = 0; + + fno = my_malloc(sizeof(FILINFO)); + if (fno == 0) + return ERROR; int File_i; - bool Reboot = false; MessageContainer responseContainer; ActivateVersionRequest* request = activate_version_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); @@ -42,6 +89,7 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) FPGA_ID FileDestinationToFPGAId[VERSION_FILE_DESTINATION__FPGA3+1] = {MAX_FPGA,FPGA1,FPGA2,FPGA3}; + ustrncpy (ActivateToken, requestContainer->token,36); strcpy (SWUpgradePath,request->path); strcat(SWUpgradePath,"/package.cfg"); @@ -50,8 +98,18 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) if (Fresult == FR_OK) { VersionPackage = version_package_descriptor__unpack(NULL,Bytes,buffer); + NumberOfFiles = VersionPackage->n_filedescriptors; + if (NumberOfFiles) + { + CurrentRunningFile = 0; + //add control 1 second + ActivateVersionControlId = AddControlCallback( ActivateVersionCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); + } for (File_i = 0;File_i<VersionPackage->n_filedescriptors;File_i++) { + CurrentRunningFile = 0; + CurrentFileSize = -1; + vme_index = 0; switch(VersionPackage->filedescriptors[File_i]->destination) { case VERSION_FILE_DESTINATION__MCU: @@ -62,11 +120,11 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) //validate //update usnprintf(FullPath, 50, "%s%s%s", request->path,"/", VersionPackage->filedescriptors[File_i]->filename); - if (VersionPackage->filedescriptors[File_i]->destination == VERSION_FILE_DESTINATION__FPGA3) - Reboot = true; - else - Reboot = false; - Fresult = FPGA_Programming_Request( FileDestinationToFPGAId[VersionPackage->filedescriptors[File_i]->destination], FullPath, Reboot); + Reboot = true; + memset (fno,0,sizeof(FILINFO)); + Fresult = f_stat(FullPath,fno); + CurrentFileSize = fno->fsize; + Fresult = FPGA_Programming_Request( FileDestinationToFPGAId[VersionPackage->filedescriptors[File_i]->destination], FullPath, false); break; case VERSION_FILE_DESTINATION__ConfigParams: usnprintf(FullPath, 50, "%s%s%s", request->path,"/", VersionPackage->filedescriptors[File_i]->filename); @@ -108,6 +166,10 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) activate_version_request__free_unpacked(request,NULL); SendChars(container_buffer, container_size); + if (Reboot == true) + { + Power_Reset(); + } return OK; } |
