APP 4
Dependencies: mbed CRC16 mbed-rtos
Diff: APP.cpp
- Revision:
- 24:e307f6aad106
- Parent:
- 23:d41a23d8f2d7
--- a/APP.cpp Tue Feb 23 14:50:48 2016 +0000 +++ b/APP.cpp Tue Feb 23 15:57:09 2016 +0000 @@ -28,6 +28,9 @@ int bufferCounter = 0; bool firstBit = true; STATES tempState = NOSTATE; +Mail<Message, 16> mailBox; +Mutex mute; +bool sendMessageReady; int benchmark(void (*function) (void)) { @@ -40,19 +43,23 @@ { if ((LPC_TIM1->IR & 0x01) == 0x01) // if MR0 interrupt, proceed { - clockTick = !clockTick; - out = encode(message[counter], clockTick); - if (clockTick) + if(sendMessageReady) { - counter++; + clockTick = !clockTick; + out = encode(message[counter], clockTick); + + if (clockTick) + { + counter++; + } + + if (counter >= 56+messageLength*8) + { + counter = 0; + sendMessageReady = false; + } } - - if (counter >= 56+messageLength*8) - { - counter = 0; - } - LPC_TIM1->IR |= 1 << 0; // Clear MR0 interrupt flag } } @@ -123,12 +130,15 @@ LPC_TIM2->TCR = 1; // start Timer } + + int main() { - message = buildFrame(convertToBits("BLUB", messageLength), messageLength); + //message = buildFrame(convertToBits("BLUB", messageLength), messageLength); LPC_PINCON->PINSEL0 |= (3 << 8); // P0.4 = CAP2.0 initTimers(); + Thread term(terminal); while (true) { @@ -146,6 +156,19 @@ dataReady = false; } + osEvent evt = mailBox.get(); + if (evt.status == osEventMail) + { + mute.lock(); + // écriture de l'événement en sortie (port série) + Message *mail = (Message*)evt.value.p; + messageLength = mail->size; + pc.printf("Envoie de %i bytes, %c \r\n", messageLength, mail->buffer[0]); + message = buildFrame(convertToBits(mail->buffer, messageLength), messageLength); + mailBox.free(mail); + sendMessageReady = true; + mute.unlock(); + } #if DEBUG @@ -154,11 +177,6 @@ } } -void bSToChar(bitset<8> bs) -{ - -} - void _decodeCallback(bitset<MAX_DATA> decMessage, int size) { decodedMessage = decMessage; @@ -208,3 +226,37 @@ swag = false; } } + +void terminal(void const *args) +{ + char messageBuffer[80]; + int bufferCounter = 0; + char temp; + while(true) + { + if(pc.readable()) + { + temp = pc.getc(); + if(temp == 0x0D) + { + pc.printf("Debug send %c , %i\r\n", messageBuffer[0], bufferCounter); + mute.lock(); + + Message * mes = mailBox.alloc(); + memcpy(mes->buffer, messageBuffer, bufferCounter); + mes->size = bufferCounter; + mailBox.put(mes); + + mute.unlock(); + + bufferCounter = 0; + } + else + { + pc.printf("%c", temp); + messageBuffer[bufferCounter] = temp; + bufferCounter++; + } + } + } +}