//------------------------------------------------------------------------------- #include "loadBasicPacket.h" //------------------------------------------------------------------------------- #include "generateSave.h" #include "generateBin.h" #include "generateOutput.h" //------------------------------------------------------------------------------- bool isLoadBasicPacket( void ) { return (strlen( miBaseImageName ) != 0); } //------------------------------------------------------------------------------- void freeBasicPacket( void ) { removeTempFile( BASEIMAGE_CODEBIN ); removeTempFile( BASEIMAGE_SAVE ); #if( CONFIG_DATA_FLASH_SIZE != 0 ) removeTempFile( BASEIMAGE_DATABIN ); #endif } static inline bool generateDecryptFlashBin( const char *tmp, const char *final ) { dbgMsg( "[generateDecryptFlashBin]\n" ); if( sisspi_encrypt( tmp, final, false ) ) { errMsg( "decrypt failed\n"); return false; } removeTempFile( tmp ); return true; } static inline bool outputFileContent( const char *targetName, FILE *fpIn, u32 cpySize ) { FILE *fpOut; int readSize; u8 readBuf[TMP_BUFFER_SIZE] = {0}; fpOut = fopen( targetName, "wb" ); if( fpOut == NULL ) { errMsg( "File (%s) can not create\n", targetName ); return false; } while( (!feof( fpIn)) && (cpySize) ) { readSize = fread( readBuf, 1, MIN(TMP_BUFFER_SIZE,cpySize), fpIn ); if( readSize < 0 ) return true; fwrite( readBuf, 1, readSize, fpOut ); cpySize -= readSize; } fclose( fpOut ); return true; } bool separateBasicPacket() { if( !isLoadBasicPacket() ) return true; showMsg( "miBasicPacketImage: %s\n", miBaseImageName ); bool ret = true; FILE *fpIn= fopen( miBaseImageName, "rb" ); if( fpIn == NULL ) return false; if( ret ) ret = outputFileContent( BASEIMAGE_SAVE, fpIn, SAVEINFO_SIZE ); if( ret ) ret = outputFileContent( BASEIMAGE_CODETMP, fpIn, CONFIG_CODE_FLASH_SIZE*1024 ); if( ret ) ret = generateDecryptFlashBin( BASEIMAGE_CODETMP, BASEIMAGE_CODEBIN ); #if( CONFIG_DATA_FLASH_SIZE != 0 ) if( ret ) ret = outputFileContent( BASEIMAGE_DATATMP, fpIn, CONFIG_DATA_FLASH_SIZE*1024 ); if( ret ) ret = generateDecryptFlashBin( BASEIMAGE_DATATMP, BASEIMAGE_DATABIN ); #endif fclose( fpIn ); return ret; } //------------------------------------------------------------------------------- bool loadBasicPacket() { if( !separateBasicPacket() ) return false; return true; }