Skip to content
Snippets Groups Projects
Commit ccc5ed38 authored by Julia Scharsich's avatar Julia Scharsich
Browse files

Update lay1+2_remastered.c

parent bac802de
No related branches found
No related tags found
No related merge requests found
...@@ -86,65 +86,74 @@ int main(void){ ...@@ -86,65 +86,74 @@ int main(void){
byte* receivedFrame = malloc(MAXFRAMESIZE*sizeof(byte)); byte* receivedFrame = malloc(MAXFRAMESIZE*sizeof(byte));
uint16_t sizeToReceive = MAXFRAMESIZE; uint16_t sizeToReceive = MAXFRAMESIZE;
byte action; // 0 - broadcast successful, to layer 4; 1 - receive, to layer 4; 2 - relay byte action; // 0 - broadcast successful, to layer 4; 1 - receive, to layer 4; 2 - relay
puts("Getting ready to send."); /*
byte sizeToSend = 4; * puts("Getting ready to send.");
byte* payload = malloc((sizeToSend)*sizeof(byte)); * byte sizeToSend = 4;
payload[0] = 211; //dest * byte* payload = malloc((sizeToSend)*sizeof(byte));
payload[1] = SELF; //src * payload[0] = 211; //dest
payload[2] = 0xB3; * payload[1] = SELF; //src
payload[3] = 0x10; * payload[2] = 0xB3;
* payload[3] = 0x10;
ATOMIC_BLOCK(ATOMIC_FORCEON){ *
fillSend(payload, sizeToSend); * ATOMIC_BLOCK(ATOMIC_FORCEON){
puts("Sendbuffer filled."); * fillSend(payload, sizeToSend);
} * puts("Sendbuffer filled.");
* }
*/
while(1){ while(1){
//if(!readyToSend){} switch(state){
ATOMIC_BLOCK(ATOMIC_FORCEON){ case 1: //USART interrupt/ receiving data
// Data Package: 0 Preamble, 1 - 4 CRC, 5 Length, 6 Destination, 7 Source, 8 - n Data ATOMIC_BLOCK(ATOMIC_FORCEON){
if(readyToReceive){ // Data Package: 0 Preamble, 1 - 4 CRC, 5 Length, 6 Destination, 7 Source, 8 - n Data
if(bufferIndex != 0) receivedFrame[receiveIndex] = frame[bufferIndex-1]; if(readyToReceive){
else receivedFrame[receiveIndex] = frame[MAXFRAMESIZE-1]; if(bufferIndex != 0) receivedFrame[receiveIndex] = frame[bufferIndex-1];
//printf("receivedFrame[%d] = %d, bufferIndex: %d \n", receiveIndex, receivedFrame[receiveIndex], bufferIndex); else receivedFrame[receiveIndex] = frame[MAXFRAMESIZE-1];
//printf("receivedFrame[%d] = %d, bufferIndex: %d \n", receiveIndex, receivedFrame[receiveIndex], bufferIndex);
if(receiveIndex==0){
if(receivedFrame[receiveIndex] == 0x7E) receiveIndex++; if(receiveIndex==0){
} if(receivedFrame[receiveIndex] == 0x7E) receiveIndex++;
else if(receiveIndex==5){ }
sizeToReceive = (uint16_t)receivedFrame[receiveIndex]; else if(receiveIndex==5){
//receivedFrame = (byte*) realloc (receivedFrame, (sizeToReceive+6)*sizeof(byte)); sizeToReceive = (uint16_t)receivedFrame[receiveIndex];
receiveIndex++; //receivedFrame = (byte*) realloc (receivedFrame, (sizeToReceive+6)*sizeof(byte));
receiveIndex++;
}
else if(receiveIndex==sizeToReceive+5){
if(!crc_check(receivedFrame)){
puts("CRC-Check failed");
for(uint i=0; i < sizeToReceive+6; i++)
printf("%d ", receivedFrame[i] );
}
else{
puts("CRC-Check successful.\nReceived: ");
for(uint i=0; i < sizeToReceive+6; i++)
printf("%d ", receivedFrame[i] );
printf("\n");
//Hier evtl. noch Speicherung und/oder Ausgabe einbauen.
}
l3_exec(action, receivedFrame);
receiveIndex = 0;
}
else if(receiveIndex==7){ //check destination
action = l3_action(receivedFrame[6], receivedFrame[7]);
receiveIndex++;
}
else{
receiveIndex++;
}
readyToReceive = 0;
}
} }
else if(receiveIndex==sizeToReceive+5){ if(action != 2) break; // wenn relayed werden soll, wird einfach in state 2 übergegangen
if(!crc_check(receivedFrame)){ else state =2;
puts("CRC-Check failed"); case 2:
for(uint i=0; i < sizeToReceive+6; i++) //relay
printf("%d ", receivedFrame[i] ); break;
} default:
else{ memset(send, 0, sizeof(send));
puts("CRC-Check successful.\nReceived: "); break;
for(uint i=0; i < sizeToReceive+6; i++)
printf("%d ", receivedFrame[i] );
printf("\n");
//Hier evtl. noch Speicherung und/oder Ausgabe einbauen.
}
l3_exec(action, receivedFrame);
receiveIndex = 0;
}
else if(receiveIndex==7){ //check destination
action = l3_action(receivedFrame[6], receivedFrame[7]);
receiveIndex++;
}
else{
receiveIndex++;
}
readyToReceive = 0;
}
} }
} }
return 0; return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment