84 lines
1.7 KiB
C
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 */
|
|
}
|
|
|
|
|