📄 get_data_dummy.c
字号:
//get_data_dummy.c
//dummy funktion f鰎 att simulera datah鋗tning
//#define FillHostBuffer1_MM 1
//#define FillHostBuffer2_MM 2
//#define HostBufferSize 10 //numbers of 32 bit segments in each HostBuffer
//#define HostBufferBitLength (HostBufferSize*32) //numbers of bits in HostBuffer
volatile unsigned int HostBuffer1[HostBufferSize]; //buffer 1
volatile unsigned int HostBuffer2[HostBufferSize]; //buffer 2
volatile unsigned int *CurrentHostBuffer; //current buffer used
static unsigned int offset; //bit offset in current buffer to read next time
void get_data(unsigned char nr_of_bits, unsigned char *outdata){
unsigned char bits_read = 0;
if(offset + nr_of_bits < HostBufferBitLength){ //All data needed is in same buffer
*outdata = (unsigned char) GET_FIELD(CurrentHostBuffer,offset,nr_of_bits);
offset += nr_of_bits; //increase offset
}else{ //data needed is in both buffers, split
bits_read = HostBufferBitLength-1-offset;//number of bits left in current buffer
*outdata = (unsigned char) GET_FIELD(CurrentHostBuffer,offset,bits_read); //read the remainding part of current buffer
//change HostBuffer
if(CurrentHostBuffer == HostBuffer1){
//fill HostBuffer1 and change to buffer2
pci_message_send(FillHostBuffer1_MM);//send mailbox message to host
CurrentHostBuffer == HostBuffer2; //change buffer
}else{
//fill HostBuffer2 and change to buffer1
pci_message_send(FillHostBuffer2_MM);//send mailbox message to host
CurrentHostBuffer == HostBuffer1; //change buffer
}
(*outdata) = (*outdata) | (GET_FIELD(CurrentHostBuffer, 0, nr_of_bits - bits_read) << bits_read); //take the bits needed
offset = nr_of_bits - bits_read; //set offset to the number of bits read from current buffer
}
}
void init_get_data(void){
CurrentHostBuffer = HostBuffer1; //At startup set current buffer to HostBuffer1
offset = 0; //Begining of buffer
//fill HostBuffer1
pci_message_sync_send(FillHostBuffer1_MM);//send mailbox message to host
//fill HostBuffer2
pci_message_sync_send(FillHostBuffer2_MM);//send mailbox message to host
}
void init_get_data_dummy(void){
CurrentHostBuffer = HostBuffer1;
offset = 0;
memset(HostBuffer1,0xAAAAAAAA, HostBufferSize*sizeof(unsigned int)); //Fill buffer 1
memset(HostBuffer2,0x55555555, HostBufferSize*sizeof(unsigned int)); //Fill buffer 2
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -