diff --git a/.DS_Store b/.DS_Store index cd74acdac4cff6bcaa2fe218f6c0249217b8b9ee..bfe7f211fb0823a0090169b12c3cf7860767cc63 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/project/.DS_Store b/project/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..e05bb8c25f34beb683ffb1a4eaa0962081dd9772 100644 Binary files a/project/.DS_Store and b/project/.DS_Store differ diff --git a/project/lay1+2_remastered.c b/project/lay1+2_remastered.c index 979e2dccaf9620c9d792f71e5a1920d429caf2ca..74993420c79a8120eed1746ed4d27c4677fc3b0c 100644 --- a/project/lay1+2_remastered.c +++ b/project/lay1+2_remastered.c @@ -25,8 +25,6 @@ byte send[MAXFRAMESIZE] = {0}; // Testdata: 0xB3, 0x10 = 10110011, 00010000 byte frame[MAXFRAMESIZE] = {0}; // 0 - Preambel, 1 to 4 - CRC checksum, 5 - size, 6 to n (n = max. 256) - Payload - -byte state = 0; byte flag = 1; byte bufferIndex = 0; // Zählvariable für ISR byte sendIndex = 0; @@ -97,7 +95,7 @@ int main(void){ byte* receivedFrame = malloc(MAXFRAMESIZE*sizeof(byte)); byte sizeToReceive = MAXFRAMESIZE-1; byte action; // 0 - broadcast successful, to layer 4; 1 - receive, to layer 4; 2 - relay - + byte state = 0; /* * puts("Getting ready to send."); * byte sizeToSend = 4; @@ -114,13 +112,14 @@ int main(void){ */ while(1){ - switch(state){ +/* switch(state){ default: ATOMIC_BLOCK(ATOMIC_FORCEON){ if(!readyToSend) sendZeroes(); } break; case 1: // receiving data + */ ATOMIC_BLOCK(ATOMIC_FORCEON){ // Data Package: 0 Preamble, 1 - 4 CRC, 5 Length, 6 Destination, 7 Source, 8 - n Data if(readyToReceive){ @@ -168,15 +167,15 @@ int main(void){ } } - case 2: //send / relay + // case 2: //send / relay l3_send(&state); - break; + // break; - case 3: //USART Interrupt happened, add msg to queue + /*case 3: //USART Interrupt happened, add msg to queue l3_send(&state); - break; + */ - } + // vom switch} } return 0; } diff --git a/project/lay3.c b/project/lay3.c index 08520080293d5cb10007383f91e12c799bdc9c5b..871a41594c17b0ef4030b352eeafbdddf680ce86 100644 --- a/project/lay3.c +++ b/project/lay3.c @@ -71,23 +71,19 @@ void l3_exec(byte action, byte* frame){ puts("Handing package to layer 4.\n"); break; case 2: //relay - //fillSend(frame+6, frame[5]); + - //Achtung: z.B. bei 8-elementiger Queue: Fall tail ist 7, head ist 0 --> 0-1 != 7 trotzdem queue full - if(tail == head-1 || (head == 0 && tail == MAXQUEUESIZE)) puts("Message Queue full."); - else{ + //Achtung: z.B. bei 8-elementiger Queue: Fall tail ist 7, head ist 0 --> 0-1 != 7 trotzdem queue full + // Auskommentiert, weil erst in Lay4 Acks hinzukommen + + //if(tail == head-1 || (head == 0 && tail == MAXQUEUESIZE)) puts("Message Queue full."); + //else{ if(head == 0) head = MAXQUEUESIZE-1; else head--; //msgQueue = realloc(msgQueue, tail+1); //würde ich nicht machen. lieber einfach eine feste Größe für die Queue. msgQueue[head] = realloc(msgQueue[head], sizeof(frame)); copyFrame(frame, msgQueue[head]); - //tail++; - } - - - //evtl. state = 2 setzen für main -> weiß, dass jetzt priorisiert weitergeleitet werden muss - - // hier noch head merken und/oder Index zum senden anpassen. -> Priority + //} break; default: break;