Files
sunny360vfe_proj/controllers/get_snc_crc32_wrapper.c
T

84 lines
1.7 KiB
C

/*
* Include Files
*
*/
#if defined(MATLAB_MEX_FILE)
#include "tmwtypes.h"
#include "simstruc_types.h"
#else
#define SIMPLIFIED_RTWTYPES_COMPATIBILITY
#include "rtwtypes.h"
#undef SIMPLIFIED_RTWTYPES_COMPATIBILITY
#endif
/* %%%-SFUNWIZ_wrapper_includes_Changes_BEGIN --- EDIT HERE TO _END */
#include <math.h>
#include <stdint.h>
#include <stddef.h>
/* %%%-SFUNWIZ_wrapper_includes_Changes_END --- EDIT HERE TO _BEGIN */
#define u_1_width 1
#define y_width 1
/*
* Create external references here.
*
*/
/* %%%-SFUNWIZ_wrapper_externs_Changes_BEGIN --- EDIT HERE TO _END */
/* extern double func(double a); */
uint32_t CRC32Value(int i)
{
int j;
uint32_t u1CRC;
u1CRC=i;
for(j=8 ;j>0 ;j-- )
{
if(u1CRC& 1)
u1CRC =(u1CRC >> 1)^0xEDB88320L;
else
u1CRC >>= 1;
}
return u1CRC;
}
uint32_t CalculateBlockCRC32(uint32_t u1Count,uint8_t *ucBuffer)
{
uint32_t u1Temp1;
uint32_t u1Temp2;
uint32_t u1CRC=0;
while(u1Count-- != 0)
{
u1Temp1 = u1CRC>>8 &0x00FFFFFFL;
u1Temp2 = CRC32Value(((int)u1CRC ^ *ucBuffer++) & 0xff);
u1CRC=u1Temp1 ^ u1Temp2;
}
return u1CRC;
}
/* %%%-SFUNWIZ_wrapper_externs_Changes_END --- EDIT HERE TO _BEGIN */
/*
* Output function
*
*/
void get_snc_crc32_Outputs_wrapper(const uint8_T *ucBuffer,
const uint32_T *u1Count,
uint32_T *u1CRC,
const int_T u_width)
{
/* %%%-SFUNWIZ_wrapper_Outputs_Changes_BEGIN --- EDIT HERE TO _END */
/* This sample sets the output equal to the input
y0[0] = u0[0];
For complex signals use: y0[0].re = u0[0].re;
y0[0].im = u0[0].im;
y1[0].re = u1[0].re;
y1[0].im = u1[0].im;
*/
u1CRC[0] = CalculateBlockCRC32(u1Count[0], ucBuffer);
/* %%%-SFUNWIZ_wrapper_Outputs_Changes_END --- EDIT HERE TO _BEGIN */
}