Dependencies:   LCD_DISCO_F429ZI STEPPER_LED_GUI mbed BSP_DISCO_F429ZI DECODER

Committer:
lolkusus
Date:
Mon May 18 18:03:56 2020 +0000
Revision:
1:8db86d36b823
Parent:
0:2d7fdb94682a
final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lolkusus 0:2d7fdb94682a 1 #include "DECODER.h"
lolkusus 0:2d7fdb94682a 2 #include "STEPPER_LED_GUI.h"
lolkusus 0:2d7fdb94682a 3
lolkusus 0:2d7fdb94682a 4 #define CR '\r'
lolkusus 0:2d7fdb94682a 5
lolkusus 1:8db86d36b823 6 Serial MyUart(USBTX, USBRX, 9600);
lolkusus 1:8db86d36b823 7 Decoder MyDecoder;
lolkusus 1:8db86d36b823 8 StepperLedGui MyGui;
lolkusus 0:2d7fdb94682a 9
lolkusus 0:2d7fdb94682a 10 int puts (char *cBuffer, unsigned char ucBufferSize)
lolkusus 0:2d7fdb94682a 11 {
lolkusus 0:2d7fdb94682a 12 unsigned char ucBufferPointer;
lolkusus 0:2d7fdb94682a 13 for (ucBufferPointer = 0; ucBufferPointer <= ucBufferSize; ucBufferPointer++)
lolkusus 0:2d7fdb94682a 14 {
lolkusus 0:2d7fdb94682a 15 if (cBuffer[ucBufferPointer] == NULL)
lolkusus 0:2d7fdb94682a 16 break;
lolkusus 0:2d7fdb94682a 17
lolkusus 0:2d7fdb94682a 18 }
lolkusus 0:2d7fdb94682a 19 if (ucBufferPointer == ucBufferSize)
lolkusus 0:2d7fdb94682a 20 return 1;
lolkusus 0:2d7fdb94682a 21
lolkusus 0:2d7fdb94682a 22 for (unsigned char ucBufferPointer = 0; cBuffer[ucBufferPointer] != NULL; ucBufferPointer++)
lolkusus 0:2d7fdb94682a 23 {
lolkusus 1:8db86d36b823 24 MyUart.putc(cBuffer[ucBufferPointer]);
lolkusus 0:2d7fdb94682a 25 }
lolkusus 1:8db86d36b823 26 MyUart.putc(CR);
lolkusus 0:2d7fdb94682a 27 return 0;
lolkusus 0:2d7fdb94682a 28 }
lolkusus 0:2d7fdb94682a 29
lolkusus 0:2d7fdb94682a 30 int gets (char *cBuffer, unsigned char ucBufferSize)
lolkusus 0:2d7fdb94682a 31 {
lolkusus 0:2d7fdb94682a 32 unsigned char ucBufferPointer = 0;
lolkusus 0:2d7fdb94682a 33
lolkusus 0:2d7fdb94682a 34 while(ucBufferPointer < ucBufferSize)
lolkusus 0:2d7fdb94682a 35 {
lolkusus 1:8db86d36b823 36 cBuffer[ucBufferPointer] = MyUart.getc();
lolkusus 0:2d7fdb94682a 37 if (cBuffer[ucBufferPointer] == CR)
lolkusus 0:2d7fdb94682a 38 {
lolkusus 0:2d7fdb94682a 39 cBuffer[ucBufferPointer] = NULL;
lolkusus 0:2d7fdb94682a 40 return 0;
lolkusus 0:2d7fdb94682a 41 }
lolkusus 0:2d7fdb94682a 42 ucBufferPointer++;
lolkusus 0:2d7fdb94682a 43 }
lolkusus 0:2d7fdb94682a 44 return 1;
lolkusus 0:2d7fdb94682a 45 }
lolkusus 0:2d7fdb94682a 46
lolkusus 0:2d7fdb94682a 47 void handleMessage(Token *pToken)
lolkusus 0:2d7fdb94682a 48 {
lolkusus 0:2d7fdb94682a 49 char cUnknownCommand[] = "unknowncommand";
lolkusus 0:2d7fdb94682a 50 char cID[] = "id 0xABCD";
lolkusus 0:2d7fdb94682a 51 char cOK[] = "ok";
lolkusus 0:2d7fdb94682a 52
lolkusus 0:2d7fdb94682a 53 if (pToken[0].eType == KEYWORD)
lolkusus 0:2d7fdb94682a 54 {
lolkusus 0:2d7fdb94682a 55 switch(pToken[0].uValue.eKeyword)
lolkusus 0:2d7fdb94682a 56 {
lolkusus 0:2d7fdb94682a 57 case ID:
lolkusus 0:2d7fdb94682a 58 puts(cID, sizeof(cID));
lolkusus 0:2d7fdb94682a 59 break;
lolkusus 0:2d7fdb94682a 60 case CALLIB:
lolkusus 1:8db86d36b823 61 MyGui.MotorCallib();
lolkusus 0:2d7fdb94682a 62 puts(cOK, sizeof(cOK));
lolkusus 0:2d7fdb94682a 63 break;
lolkusus 0:2d7fdb94682a 64 case GOTO:
lolkusus 0:2d7fdb94682a 65 if (pToken[1].eType == NUMBER)
lolkusus 0:2d7fdb94682a 66 {
lolkusus 1:8db86d36b823 67 MyGui.gotoPosition(pToken[1].uValue.uiNumber);
lolkusus 0:2d7fdb94682a 68 puts(cOK, sizeof(cOK));
lolkusus 0:2d7fdb94682a 69 }
lolkusus 0:2d7fdb94682a 70 else
lolkusus 0:2d7fdb94682a 71 {
lolkusus 0:2d7fdb94682a 72 puts(cUnknownCommand, sizeof(cUnknownCommand));
lolkusus 0:2d7fdb94682a 73 }
lolkusus 0:2d7fdb94682a 74 break;
lolkusus 0:2d7fdb94682a 75 case STEP:
lolkusus 0:2d7fdb94682a 76 if (pToken[1].eType == NUMBER)
lolkusus 0:2d7fdb94682a 77 {
lolkusus 1:8db86d36b823 78 MyGui.MotorSteps(pToken[1].uValue.uiNumber);
lolkusus 0:2d7fdb94682a 79 puts(cOK, sizeof(cOK));
lolkusus 0:2d7fdb94682a 80 }
lolkusus 0:2d7fdb94682a 81 else
lolkusus 0:2d7fdb94682a 82 {
lolkusus 0:2d7fdb94682a 83 puts(cUnknownCommand, sizeof(cUnknownCommand));
lolkusus 0:2d7fdb94682a 84 }
lolkusus 0:2d7fdb94682a 85 break;
lolkusus 0:2d7fdb94682a 86 default:
lolkusus 0:2d7fdb94682a 87 puts(cUnknownCommand, sizeof(cUnknownCommand));
lolkusus 0:2d7fdb94682a 88 break;
lolkusus 0:2d7fdb94682a 89 }
lolkusus 0:2d7fdb94682a 90 }
lolkusus 0:2d7fdb94682a 91 else
lolkusus 0:2d7fdb94682a 92 {
lolkusus 0:2d7fdb94682a 93 puts(cUnknownCommand, sizeof(cUnknownCommand));
lolkusus 0:2d7fdb94682a 94 }
lolkusus 0:2d7fdb94682a 95 }
lolkusus 0:2d7fdb94682a 96
lolkusus 0:2d7fdb94682a 97 int main()
lolkusus 0:2d7fdb94682a 98 {
lolkusus 0:2d7fdb94682a 99 char cBuffor[50];
lolkusus 0:2d7fdb94682a 100 char cUnknownCommand[] = "unknowncommand";
lolkusus 0:2d7fdb94682a 101
lolkusus 0:2d7fdb94682a 102 while(1)
lolkusus 0:2d7fdb94682a 103 {
lolkusus 0:2d7fdb94682a 104 if (gets(cBuffor,sizeof(cBuffor)) == 0)
lolkusus 0:2d7fdb94682a 105 {
lolkusus 1:8db86d36b823 106 if (MyDecoder.DecodeMsg(cBuffor) == OK)
lolkusus 0:2d7fdb94682a 107 {
lolkusus 1:8db86d36b823 108 handleMessage(MyDecoder.asToken);
lolkusus 0:2d7fdb94682a 109 }
lolkusus 0:2d7fdb94682a 110 else
lolkusus 0:2d7fdb94682a 111 {
lolkusus 0:2d7fdb94682a 112 puts(cUnknownCommand, sizeof(cUnknownCommand));
lolkusus 0:2d7fdb94682a 113 }
lolkusus 0:2d7fdb94682a 114 }
lolkusus 0:2d7fdb94682a 115 }
lolkusus 0:2d7fdb94682a 116 }