_i16 sl_FsGetInfo( const _u8 *pFileName, const _u32 Token, SlFsFileInfo_t *pFsFileInfo ) { _SlFsGetInfoMsg_u Msg; _SlCmdExt_t CmdExt; CmdExt.TxPayloadLen = ( _sl_Strlen( pFileName ) + 4 ) & ( ~3 ); /* add 4: 1 for NULL and the 3 for align */ CmdExt.RxPayloadLen = 0; CmdExt.pTxPayload = ( _u8 * )pFileName; CmdExt.pRxPayload = NULL; Msg.Cmd.Token = Token; VERIFY_RET_OK( _SlDrvCmdOp( ( _SlCmdCtrl_t * )&_SlFsGetInfoCmdCtrl, &Msg, &CmdExt ) ); pFsFileInfo->flags = Msg.Rsp.flags; pFsFileInfo->FileLen = Msg.Rsp.FileLen; pFsFileInfo->AllocatedLen = Msg.Rsp.AllocatedLen; pFsFileInfo->Token[0] = Msg.Rsp.Token[0]; pFsFileInfo->Token[1] = Msg.Rsp.Token[1]; pFsFileInfo->Token[2] = Msg.Rsp.Token[2]; pFsFileInfo->Token[3] = Msg.Rsp.Token[3]; return ( _i16 )( ( _i16 )Msg.Rsp.Status ); }
_i16 sl_FsClose(_i32 FileHdl, _u8* pCeritificateFileName,_u8* pSignature ,_u32 SignatureLen) { _SlFsCloseMsg_u Msg = {0}; _SlCmdExt_t ExtCtrl; Msg.Cmd.FileHandle = FileHdl; if( pCeritificateFileName != NULL ) { Msg.Cmd.CertificFileNameLength = (_sl_Strlen(pCeritificateFileName)+4) & (~3); /* add 4: 1 for NULL and the 3 for align */ } Msg.Cmd.SignatureLen = SignatureLen; ExtCtrl.TxPayloadLen = ((SignatureLen+3) & (~3)); /* align */ ExtCtrl.pTxPayload = pSignature; ExtCtrl.RxPayloadLen = (_u16)Msg.Cmd.CertificFileNameLength; ExtCtrl.pRxPayload = pCeritificateFileName; /* Add signature */ if(ExtCtrl.pRxPayload != NULL && ExtCtrl.RxPayloadLen != 0) { g_pCB->RelayFlagsViaRxPayload = TRUE; } VERIFY_RET_OK(_SlDrvCmdOp((_SlCmdCtrl_t *)&_SlFsCloseCmdCtrl, &Msg, &ExtCtrl)); return (_i16)((_i16)Msg.Rsp.status); }
_i32 sl_FsOpen( const _u8 *pFileName, const _u32 AccessModeAndMaxSize, _u32 *pToken, _i32 *pFileHandle ) { _SlReturnVal_t RetVal; _SlFsOpenMsg_u Msg; _SlCmdExt_t CmdExt; CmdExt.TxPayloadLen = ( _sl_Strlen( pFileName ) + 4 ) & ( ~3 ); /* add 4: 1 for NULL and the 3 for align */ CmdExt.RxPayloadLen = 0; CmdExt.pTxPayload = ( _u8 * )pFileName; CmdExt.pRxPayload = NULL; Msg.Cmd.Mode = AccessModeAndMaxSize; if( pToken != NULL ) Msg.Cmd.Token = *pToken; else Msg.Cmd.Token = 0; RetVal = _SlDrvCmdOp( ( _SlCmdCtrl_t * )&_SlFsOpenCmdCtrl, &Msg, &CmdExt ); *pFileHandle = Msg.Rsp.FileHandle; if ( pToken != NULL ) *pToken = Msg.Rsp.Token; /* in case of an error, return the erros file handler as an error code */ if( *pFileHandle < 0 ) return *pFileHandle; return ( _i32 )RetVal; }
_i16 sl_FsDel(_u8 *pFileName,_u32 Token) { _SlFsDeleteMsg_u Msg; _SlCmdExt_t CmdExt; CmdExt.TxPayloadLen = (_sl_Strlen(pFileName)+4) & (~3); /* add 4: 1 for NULL and the 3 for align */ CmdExt.RxPayloadLen = 0; CmdExt.pTxPayload = pFileName; CmdExt.pRxPayload = NULL; Msg.Cmd.Token = Token; VERIFY_RET_OK(_SlDrvCmdOp((_SlCmdCtrl_t *)&_SlFsDeleteCmdCtrl, &Msg, &CmdExt)); return (_i16)((_i16)Msg.Rsp.status); }