1st release (without comment)

Committer:
nsrwsurasak
Date:
Thu Sep 15 01:47:46 2016 +0000
Revision:
0:bc10ea82aec3
Child:
1:5e6c5fbd48d6
RMS_UART 1st release (without comment)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nsrwsurasak 0:bc10ea82aec3 1 #include "mbed.h"
nsrwsurasak 0:bc10ea82aec3 2 #include "RMS_UART.h"
nsrwsurasak 0:bc10ea82aec3 3
nsrwsurasak 0:bc10ea82aec3 4 #ifdef EXT_SERIAL
nsrwsurasak 0:bc10ea82aec3 5 Serial serial_device(SERIAL_TX, SERIAL_RX);
nsrwsurasak 0:bc10ea82aec3 6 #else
nsrwsurasak 0:bc10ea82aec3 7 Serial serial_device(SERIAL_TX, SERIAL_RX);
nsrwsurasak 0:bc10ea82aec3 8 #endif
nsrwsurasak 0:bc10ea82aec3 9
nsrwsurasak 0:bc10ea82aec3 10 char Msg_RxBuf[MSG_BUF_SIZE + 1]; // Reading Cmd Buffer
nsrwsurasak 0:bc10ea82aec3 11 int Msg_index; // An Cmd index
nsrwsurasak 0:bc10ea82aec3 12
nsrwsurasak 0:bc10ea82aec3 13 char Content_RxBuf[CONTENT_BUF_SIZE + 1]; // Reading Cmd Buffer
nsrwsurasak 0:bc10ea82aec3 14 int Content_index; // An Cmd index
nsrwsurasak 0:bc10ea82aec3 15
nsrwsurasak 0:bc10ea82aec3 16 char FileName[MSG2FILENAME];
nsrwsurasak 0:bc10ea82aec3 17
nsrwsurasak 0:bc10ea82aec3 18 bool MsgContentManagement = false;
nsrwsurasak 0:bc10ea82aec3 19
nsrwsurasak 0:bc10ea82aec3 20 /**
nsrwsurasak 0:bc10ea82aec3 21 * @brief
nsrwsurasak 0:bc10ea82aec3 22 * @note
nsrwsurasak 0:bc10ea82aec3 23 * @retval
nsrwsurasak 0:bc10ea82aec3 24 */
nsrwsurasak 0:bc10ea82aec3 25 void Init_SerialDevice()
nsrwsurasak 0:bc10ea82aec3 26 {
nsrwsurasak 0:bc10ea82aec3 27 serial_device.baud(BPS_9600);
nsrwsurasak 0:bc10ea82aec3 28 serial_device.attach(&RxMsgInterruptCallback);
nsrwsurasak 0:bc10ea82aec3 29 }
nsrwsurasak 0:bc10ea82aec3 30
nsrwsurasak 0:bc10ea82aec3 31 /**
nsrwsurasak 0:bc10ea82aec3 32 * @brief
nsrwsurasak 0:bc10ea82aec3 33 * @note
nsrwsurasak 0:bc10ea82aec3 34 * @retval
nsrwsurasak 0:bc10ea82aec3 35 */
nsrwsurasak 0:bc10ea82aec3 36 void RxMsgInterruptCallback()
nsrwsurasak 0:bc10ea82aec3 37 {
nsrwsurasak 0:bc10ea82aec3 38 /* Start Rx interrupt */
nsrwsurasak 0:bc10ea82aec3 39 if(MsgContentManagement == false)
nsrwsurasak 0:bc10ea82aec3 40 {
nsrwsurasak 0:bc10ea82aec3 41 DoTheMsgCmd();
nsrwsurasak 0:bc10ea82aec3 42 }
nsrwsurasak 0:bc10ea82aec3 43 else
nsrwsurasak 0:bc10ea82aec3 44 {
nsrwsurasak 0:bc10ea82aec3 45 DoTheContent();
nsrwsurasak 0:bc10ea82aec3 46 }
nsrwsurasak 0:bc10ea82aec3 47 }
nsrwsurasak 0:bc10ea82aec3 48
nsrwsurasak 0:bc10ea82aec3 49 /**
nsrwsurasak 0:bc10ea82aec3 50 * @brief
nsrwsurasak 0:bc10ea82aec3 51 * @note
nsrwsurasak 0:bc10ea82aec3 52 * @retval
nsrwsurasak 0:bc10ea82aec3 53 */
nsrwsurasak 0:bc10ea82aec3 54 void DoTheContent()
nsrwsurasak 0:bc10ea82aec3 55 {
nsrwsurasak 0:bc10ea82aec3 56 // Note: you need to actually read from the serial to clear the RX interrupt
nsrwsurasak 0:bc10ea82aec3 57 Content_RxBuf[Content_index] = serial_device.getc();
nsrwsurasak 0:bc10ea82aec3 58 Content_index++;
nsrwsurasak 0:bc10ea82aec3 59
nsrwsurasak 0:bc10ea82aec3 60 if(strstr(Content_RxBuf,"*end*"))
nsrwsurasak 0:bc10ea82aec3 61 {
nsrwsurasak 0:bc10ea82aec3 62 SendContentToFile();
nsrwsurasak 0:bc10ea82aec3 63 ClearContentIndexAndBuf();
nsrwsurasak 0:bc10ea82aec3 64 MsgContentManagement = false;
nsrwsurasak 0:bc10ea82aec3 65 }
nsrwsurasak 0:bc10ea82aec3 66
nsrwsurasak 0:bc10ea82aec3 67 if(Content_index == CONTENT_BUF_SIZE)
nsrwsurasak 0:bc10ea82aec3 68 {
nsrwsurasak 0:bc10ea82aec3 69 SendContentToFile();
nsrwsurasak 0:bc10ea82aec3 70 ClearContentIndexAndBuf();
nsrwsurasak 0:bc10ea82aec3 71 }
nsrwsurasak 0:bc10ea82aec3 72 }
nsrwsurasak 0:bc10ea82aec3 73
nsrwsurasak 0:bc10ea82aec3 74 /**
nsrwsurasak 0:bc10ea82aec3 75 * @brief
nsrwsurasak 0:bc10ea82aec3 76 * @note
nsrwsurasak 0:bc10ea82aec3 77 * @retval
nsrwsurasak 0:bc10ea82aec3 78 */
nsrwsurasak 0:bc10ea82aec3 79 void DoTheMsgCmd()
nsrwsurasak 0:bc10ea82aec3 80 {
nsrwsurasak 0:bc10ea82aec3 81
nsrwsurasak 0:bc10ea82aec3 82 // Note: you need to actually read from the serial to clear the RX interrupt
nsrwsurasak 0:bc10ea82aec3 83 Msg_RxBuf[Msg_index] = serial_device.getc();
nsrwsurasak 0:bc10ea82aec3 84 Msg_index++;
nsrwsurasak 0:bc10ea82aec3 85
nsrwsurasak 0:bc10ea82aec3 86 if(strstr(Msg_RxBuf,"ls"))
nsrwsurasak 0:bc10ea82aec3 87 {
nsrwsurasak 0:bc10ea82aec3 88 GetListFileCmd();
nsrwsurasak 0:bc10ea82aec3 89 }
nsrwsurasak 0:bc10ea82aec3 90
nsrwsurasak 0:bc10ea82aec3 91 if(strstr(Msg_RxBuf,".csv"))
nsrwsurasak 0:bc10ea82aec3 92 {
nsrwsurasak 0:bc10ea82aec3 93 CheckReadEditCmd();
nsrwsurasak 0:bc10ea82aec3 94 }
nsrwsurasak 0:bc10ea82aec3 95
nsrwsurasak 0:bc10ea82aec3 96 if(strstr(Msg_RxBuf,".xml"))
nsrwsurasak 0:bc10ea82aec3 97 {
nsrwsurasak 0:bc10ea82aec3 98 CheckReadEditCmd();
nsrwsurasak 0:bc10ea82aec3 99 }
nsrwsurasak 0:bc10ea82aec3 100
nsrwsurasak 0:bc10ea82aec3 101 if(strstr(Msg_RxBuf,".log"))
nsrwsurasak 0:bc10ea82aec3 102 {
nsrwsurasak 0:bc10ea82aec3 103 CheckReadEditCmd();
nsrwsurasak 0:bc10ea82aec3 104 }
nsrwsurasak 0:bc10ea82aec3 105
nsrwsurasak 0:bc10ea82aec3 106 if(Msg_index >= 2)
nsrwsurasak 0:bc10ea82aec3 107 {
nsrwsurasak 0:bc10ea82aec3 108 if( !((strstr(Msg_RxBuf,"ls")) || (strstr(Msg_RxBuf,"rd")) || (strstr(Msg_RxBuf,"ed"))))
nsrwsurasak 0:bc10ea82aec3 109 {
nsrwsurasak 0:bc10ea82aec3 110 GetCmdError();
nsrwsurasak 0:bc10ea82aec3 111 }
nsrwsurasak 0:bc10ea82aec3 112 }
nsrwsurasak 0:bc10ea82aec3 113
nsrwsurasak 0:bc10ea82aec3 114 if(Msg_index == MSG_BUF_SIZE)
nsrwsurasak 0:bc10ea82aec3 115 {
nsrwsurasak 0:bc10ea82aec3 116 ClearCmdIndexAndBuf();
nsrwsurasak 0:bc10ea82aec3 117 }
nsrwsurasak 0:bc10ea82aec3 118 }
nsrwsurasak 0:bc10ea82aec3 119
nsrwsurasak 0:bc10ea82aec3 120 /**
nsrwsurasak 0:bc10ea82aec3 121 * @brief
nsrwsurasak 0:bc10ea82aec3 122 * @note
nsrwsurasak 0:bc10ea82aec3 123 * @retval
nsrwsurasak 0:bc10ea82aec3 124 */
nsrwsurasak 0:bc10ea82aec3 125 void GetListFileCmd()
nsrwsurasak 0:bc10ea82aec3 126 {
nsrwsurasak 0:bc10ea82aec3 127 ClearCmdIndexAndBuf();
nsrwsurasak 0:bc10ea82aec3 128 }
nsrwsurasak 0:bc10ea82aec3 129
nsrwsurasak 0:bc10ea82aec3 130 /**
nsrwsurasak 0:bc10ea82aec3 131 * @brief
nsrwsurasak 0:bc10ea82aec3 132 * @note
nsrwsurasak 0:bc10ea82aec3 133 * @retval
nsrwsurasak 0:bc10ea82aec3 134 */
nsrwsurasak 0:bc10ea82aec3 135 void CheckReadEditCmd()
nsrwsurasak 0:bc10ea82aec3 136 {
nsrwsurasak 0:bc10ea82aec3 137 if(strstr(Msg_RxBuf,"rd"))
nsrwsurasak 0:bc10ea82aec3 138 {
nsrwsurasak 0:bc10ea82aec3 139 GetFileName();
nsrwsurasak 0:bc10ea82aec3 140 }
nsrwsurasak 0:bc10ea82aec3 141 else if(strstr(Msg_RxBuf,"ed"))
nsrwsurasak 0:bc10ea82aec3 142 {
nsrwsurasak 0:bc10ea82aec3 143 GetFileName();
nsrwsurasak 0:bc10ea82aec3 144 MsgContentManagement = true;
nsrwsurasak 0:bc10ea82aec3 145 }
nsrwsurasak 0:bc10ea82aec3 146 else
nsrwsurasak 0:bc10ea82aec3 147 {
nsrwsurasak 0:bc10ea82aec3 148 GetCmdError();
nsrwsurasak 0:bc10ea82aec3 149 }
nsrwsurasak 0:bc10ea82aec3 150 }
nsrwsurasak 0:bc10ea82aec3 151
nsrwsurasak 0:bc10ea82aec3 152 /**
nsrwsurasak 0:bc10ea82aec3 153 * @brief
nsrwsurasak 0:bc10ea82aec3 154 * @note
nsrwsurasak 0:bc10ea82aec3 155 * @retval
nsrwsurasak 0:bc10ea82aec3 156 */
nsrwsurasak 0:bc10ea82aec3 157 void GetCmdError()
nsrwsurasak 0:bc10ea82aec3 158 {
nsrwsurasak 0:bc10ea82aec3 159 serial_device.printf("$?? -- Command Error\n",Msg_RxBuf + 1);
nsrwsurasak 0:bc10ea82aec3 160 ClearCmdIndexAndBuf();
nsrwsurasak 0:bc10ea82aec3 161 }
nsrwsurasak 0:bc10ea82aec3 162
nsrwsurasak 0:bc10ea82aec3 163 /**
nsrwsurasak 0:bc10ea82aec3 164 * @brief
nsrwsurasak 0:bc10ea82aec3 165 * @note
nsrwsurasak 0:bc10ea82aec3 166 * @retval
nsrwsurasak 0:bc10ea82aec3 167 */
nsrwsurasak 0:bc10ea82aec3 168 void GetFileName()
nsrwsurasak 0:bc10ea82aec3 169 {
nsrwsurasak 0:bc10ea82aec3 170 memcpy(FileName,&Msg_RxBuf[3],Msg_index - 3);
nsrwsurasak 0:bc10ea82aec3 171 ClearCmdIndexAndBuf();
nsrwsurasak 0:bc10ea82aec3 172 }
nsrwsurasak 0:bc10ea82aec3 173
nsrwsurasak 0:bc10ea82aec3 174 /**
nsrwsurasak 0:bc10ea82aec3 175 * @brief
nsrwsurasak 0:bc10ea82aec3 176 * @note
nsrwsurasak 0:bc10ea82aec3 177 * @retval
nsrwsurasak 0:bc10ea82aec3 178 */
nsrwsurasak 0:bc10ea82aec3 179 void SendContentToFile()
nsrwsurasak 0:bc10ea82aec3 180 {
nsrwsurasak 0:bc10ea82aec3 181 MsgContentManagement = true;
nsrwsurasak 0:bc10ea82aec3 182 serial_device.printf("Content -- %s \n",Content_RxBuf);
nsrwsurasak 0:bc10ea82aec3 183 ClearContentIndexAndBuf();
nsrwsurasak 0:bc10ea82aec3 184 }
nsrwsurasak 0:bc10ea82aec3 185
nsrwsurasak 0:bc10ea82aec3 186 /**
nsrwsurasak 0:bc10ea82aec3 187 * @brief
nsrwsurasak 0:bc10ea82aec3 188 * @note
nsrwsurasak 0:bc10ea82aec3 189 * @retval
nsrwsurasak 0:bc10ea82aec3 190 */
nsrwsurasak 0:bc10ea82aec3 191 void ClearCmdIndexAndBuf()
nsrwsurasak 0:bc10ea82aec3 192 {
nsrwsurasak 0:bc10ea82aec3 193 Msg_index = 0;
nsrwsurasak 0:bc10ea82aec3 194 memset(Msg_RxBuf,' ',MSG_BUF_SIZE);
nsrwsurasak 0:bc10ea82aec3 195 }
nsrwsurasak 0:bc10ea82aec3 196
nsrwsurasak 0:bc10ea82aec3 197 /**
nsrwsurasak 0:bc10ea82aec3 198 * @brief
nsrwsurasak 0:bc10ea82aec3 199 * @note
nsrwsurasak 0:bc10ea82aec3 200 * @retval
nsrwsurasak 0:bc10ea82aec3 201 */
nsrwsurasak 0:bc10ea82aec3 202 void ClearContentIndexAndBuf()
nsrwsurasak 0:bc10ea82aec3 203 {
nsrwsurasak 0:bc10ea82aec3 204 Content_index = 0;
nsrwsurasak 0:bc10ea82aec3 205 memset(Content_RxBuf,' ',CONTENT_BUF_SIZE);
nsrwsurasak 0:bc10ea82aec3 206 }