This program is a reaction time game for two players on the QW dev kit. The winner and his reaction time are shown in the console window and transmitted via Sigfox.
Fork of QW-Reactiontime by
QW Reaction Time Game
This program is a reaction time game for two players on the QW dev kit. The winner and his reaction time are shown in the console window and transmitted via Sigfox.
Code explanation
The program starts with the initialisation/declaration of the leds and pushbuttons. Also the necessary function prototypes and serial communications are declared. After that, the program is waiting to start the game. While the program is waiting, the leds are looping. Instructions to play the game are displayed in the console window. The game is started by pushing one of the buttons. Then the two players have to wait till all four leds turn on to push their button. The player that pushes the fastest after the leds turn on is the winner. The results of the game are shown in the console window and transmitted via Sigfox.
Sigfox message payload
First there is the "06", this is the Quicksand ID of the example program. This is used by Quicksand to keep track of our example programs. The second value that is transmitted is the ID of the winner. The third and last value that is transmitted is the reaction time of the winner.
More information and other example code can be found on the component page by clicking the link below: https://developer.mbed.org/components/QW-SIGFOX-Development-Kit/
main.cpp@3:1bc9575369bd, 2016-12-15 (annotated)
- Committer:
- quicksand
- Date:
- Thu Dec 15 13:27:19 2016 +0000
- Revision:
- 3:1bc9575369bd
- Parent:
- 2:73b5ca784164
changed program ID in Sigfox message
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
quicksandjonas | 2:73b5ca784164 | 1 | /* This program demonstrates how to use the board to play a reaction time game. |
quicksandjonas | 2:73b5ca784164 | 2 | * The winner and his reaction time are displayed in the console window and transmitted via Sigfox. |
quicksandjonas | 2:73b5ca784164 | 3 | * Open a serial connection to the board to see extra info and instructions. |
quicksandjonas | 1:00a17f5a247c | 4 | */ |
quicksandjonas | 1:00a17f5a247c | 5 | |
quicksand | 0:6c17d1a79f75 | 6 | #include "mbed.h" |
quicksandjonas | 1:00a17f5a247c | 7 | |
quicksandjonas | 1:00a17f5a247c | 8 | #include <stdio.h> |
quicksandjonas | 1:00a17f5a247c | 9 | #include <stdlib.h> |
quicksand | 0:6c17d1a79f75 | 10 | |
quicksandjonas | 1:00a17f5a247c | 11 | #define SER_BUFFER_SIZE 32 |
quicksandjonas | 1:00a17f5a247c | 12 | |
quicksandjonas | 1:00a17f5a247c | 13 | /* The 4 onboard LEDs */ |
quicksand | 0:6c17d1a79f75 | 14 | DigitalOut LED_0 (PB_6); |
quicksand | 0:6c17d1a79f75 | 15 | DigitalOut LED_1 (PA_7); |
quicksand | 0:6c17d1a79f75 | 16 | DigitalOut LED_2 (PA_6); |
quicksand | 0:6c17d1a79f75 | 17 | DigitalOut LED_3 (PA_5); |
quicksandjonas | 1:00a17f5a247c | 18 | |
quicksandjonas | 1:00a17f5a247c | 19 | /* The 2 user buttons */ |
quicksandjonas | 1:00a17f5a247c | 20 | InterruptIn SW1(PA_8); |
quicksandjonas | 1:00a17f5a247c | 21 | InterruptIn SW2(PB_10); |
quicksandjonas | 1:00a17f5a247c | 22 | |
quicksandjonas | 1:00a17f5a247c | 23 | /* Function prototypes */ |
quicksandjonas | 1:00a17f5a247c | 24 | void sw1interrupt(); |
quicksandjonas | 1:00a17f5a247c | 25 | void sw2interrupt(); |
quicksandjonas | 1:00a17f5a247c | 26 | void sertmout(); |
quicksandjonas | 1:00a17f5a247c | 27 | bool modem_command_check_ok(char * command); |
quicksandjonas | 1:00a17f5a247c | 28 | void modem_setup(); |
quicksandjonas | 1:00a17f5a247c | 29 | |
quicksandjonas | 1:00a17f5a247c | 30 | bool ser_timeout = false; |
quicksandjonas | 1:00a17f5a247c | 31 | |
quicksandjonas | 1:00a17f5a247c | 32 | /* Serial port over USB */ |
quicksand | 0:6c17d1a79f75 | 33 | Serial pc(USBTX, USBRX); |
quicksandjonas | 1:00a17f5a247c | 34 | |
quicksandjonas | 1:00a17f5a247c | 35 | /* Serial connection to sigfox modem */ |
quicksand | 0:6c17d1a79f75 | 36 | Serial modem(PA_9, PA_10); |
quicksand | 0:6c17d1a79f75 | 37 | |
quicksandjonas | 2:73b5ca784164 | 38 | /* User variables */ |
quicksandjonas | 2:73b5ca784164 | 39 | uint16_t randomTime; |
quicksandjonas | 2:73b5ca784164 | 40 | uint16_t reactionTime; |
quicksandjonas | 2:73b5ca784164 | 41 | uint8_t winner; |
quicksand | 0:6c17d1a79f75 | 42 | |
quicksandjonas | 2:73b5ca784164 | 43 | bool play = false; |
quicksandjonas | 2:73b5ca784164 | 44 | bool player1 = false; |
quicksandjonas | 2:73b5ca784164 | 45 | bool player2 = false; |
quicksandjonas | 2:73b5ca784164 | 46 | bool busyPlaying = false; |
quicksand | 0:6c17d1a79f75 | 47 | |
quicksandjonas | 1:00a17f5a247c | 48 | int main() { |
quicksandjonas | 1:00a17f5a247c | 49 | |
quicksandjonas | 1:00a17f5a247c | 50 | time_t t; |
quicksand | 0:6c17d1a79f75 | 51 | |
quicksandjonas | 1:00a17f5a247c | 52 | /* Setup TD120x */ |
quicksandjonas | 1:00a17f5a247c | 53 | wait(3); |
quicksandjonas | 1:00a17f5a247c | 54 | modem_setup(); |
quicksandjonas | 1:00a17f5a247c | 55 | |
quicksandjonas | 1:00a17f5a247c | 56 | /* Turn off all LED */ |
quicksand | 0:6c17d1a79f75 | 57 | LED_0 = 1; |
quicksand | 0:6c17d1a79f75 | 58 | LED_1 = 1; |
quicksand | 0:6c17d1a79f75 | 59 | LED_2 = 1; |
quicksand | 0:6c17d1a79f75 | 60 | LED_3 = 1; |
quicksand | 0:6c17d1a79f75 | 61 | |
quicksandjonas | 1:00a17f5a247c | 62 | /* Setup button interrupts */ |
quicksandjonas | 1:00a17f5a247c | 63 | SW1.fall(&sw1interrupt); |
quicksandjonas | 1:00a17f5a247c | 64 | SW2.fall(&sw2interrupt); |
quicksandjonas | 1:00a17f5a247c | 65 | |
quicksandjonas | 1:00a17f5a247c | 66 | /* Intializes random number generator */ |
quicksandjonas | 2:73b5ca784164 | 67 | srand((unsigned) time(&t)); |
quicksand | 0:6c17d1a79f75 | 68 | |
quicksandjonas | 2:73b5ca784164 | 69 | /* Push a button to start the first game */ |
quicksandjonas | 2:73b5ca784164 | 70 | pc.printf("\nPress a button to start the reaction time game...\n\r"); |
quicksandjonas | 2:73b5ca784164 | 71 | |
quicksandjonas | 2:73b5ca784164 | 72 | while(1) { |
quicksandjonas | 1:00a17f5a247c | 73 | |
quicksandjonas | 2:73b5ca784164 | 74 | /* When waiting to start a new game, show a loop on the leds */ |
quicksandjonas | 2:73b5ca784164 | 75 | while(play == false){ |
quicksandjonas | 2:73b5ca784164 | 76 | if(play == false){ // Check every time, otherwise after interrupt, loop would be finished first |
quicksandjonas | 2:73b5ca784164 | 77 | LED_0 = 1;LED_1 = 1;LED_2 = 1;LED_3 = 0; |
quicksandjonas | 2:73b5ca784164 | 78 | wait_ms(100); |
quicksandjonas | 2:73b5ca784164 | 79 | } |
quicksandjonas | 2:73b5ca784164 | 80 | if(play == false){ |
quicksandjonas | 2:73b5ca784164 | 81 | LED_0 = 1;LED_1 = 1;LED_2 = 0;LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 82 | wait_ms(100); |
quicksandjonas | 2:73b5ca784164 | 83 | } |
quicksandjonas | 2:73b5ca784164 | 84 | if(play == false){ |
quicksandjonas | 2:73b5ca784164 | 85 | LED_0 = 1;LED_1 = 0;LED_2 = 1;LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 86 | wait_ms(100); |
quicksandjonas | 2:73b5ca784164 | 87 | } |
quicksandjonas | 2:73b5ca784164 | 88 | if(play == false){ |
quicksandjonas | 2:73b5ca784164 | 89 | LED_0 = 0;LED_1 = 1;LED_2 = 1;LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 90 | wait_ms(100); |
quicksandjonas | 1:00a17f5a247c | 91 | } |
quicksandjonas | 2:73b5ca784164 | 92 | if(play == false){ |
quicksandjonas | 2:73b5ca784164 | 93 | LED_0 = 1;LED_1 = 0;LED_2 = 1;LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 94 | wait_ms(100); |
quicksandjonas | 2:73b5ca784164 | 95 | } |
quicksandjonas | 2:73b5ca784164 | 96 | if(play == false){ |
quicksandjonas | 2:73b5ca784164 | 97 | LED_0 = 1;LED_1 = 1;LED_2 = 0;LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 98 | wait_ms(100); |
quicksandjonas | 2:73b5ca784164 | 99 | } |
quicksandjonas | 2:73b5ca784164 | 100 | } |
quicksandjonas | 2:73b5ca784164 | 101 | |
quicksandjonas | 2:73b5ca784164 | 102 | /* After the 4 leds flash on, calculate the reaction time */ |
quicksandjonas | 2:73b5ca784164 | 103 | while(busyPlaying == true && player1==false && player2 == false){ |
quicksandjonas | 2:73b5ca784164 | 104 | reactionTime++; |
quicksandjonas | 2:73b5ca784164 | 105 | wait_ms(1); |
quicksandjonas | 2:73b5ca784164 | 106 | } |
quicksandjonas | 2:73b5ca784164 | 107 | |
quicksandjonas | 2:73b5ca784164 | 108 | /* When player 1 has won */ |
quicksandjonas | 2:73b5ca784164 | 109 | if(player1 == true){ |
quicksandjonas | 2:73b5ca784164 | 110 | pc.printf("\nPlayer 1 was the fastest. His time was: %d ms\n\r", reactionTime); |
quicksandjonas | 1:00a17f5a247c | 111 | LED_0 = 1; |
quicksandjonas | 1:00a17f5a247c | 112 | LED_1 = 1; |
quicksandjonas | 1:00a17f5a247c | 113 | LED_2 = 1; |
quicksandjonas | 2:73b5ca784164 | 114 | LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 115 | winner = 1; |
quicksandjonas | 2:73b5ca784164 | 116 | char command[SER_BUFFER_SIZE]; |
quicksand | 3:1bc9575369bd | 117 | sprintf(command, "AT$SF=06%04x%04x,2,0\n", (int) winner, (int) reactionTime ); |
quicksandjonas | 2:73b5ca784164 | 118 | pc.printf("Sending winner = %i and reaction time = %i ms over Sigfox\n", winner, reactionTime); |
quicksandjonas | 2:73b5ca784164 | 119 | pc.printf("using modem command: %s\n", command); |
quicksandjonas | 2:73b5ca784164 | 120 | modem_command_check_ok(command); |
quicksandjonas | 2:73b5ca784164 | 121 | player1 = false; |
quicksandjonas | 2:73b5ca784164 | 122 | player2= false; |
quicksandjonas | 2:73b5ca784164 | 123 | busyPlaying = false; |
quicksandjonas | 2:73b5ca784164 | 124 | play = false; |
quicksandjonas | 2:73b5ca784164 | 125 | reactionTime = 0; |
quicksandjonas | 2:73b5ca784164 | 126 | pc.printf("\nPress a button to start a new game...\n\r"); |
quicksandjonas | 2:73b5ca784164 | 127 | } |
quicksandjonas | 2:73b5ca784164 | 128 | |
quicksandjonas | 2:73b5ca784164 | 129 | /* When player 2 has won */ |
quicksandjonas | 2:73b5ca784164 | 130 | if(player2 == true){ |
quicksandjonas | 2:73b5ca784164 | 131 | pc.printf("\nPlayer 2 was the fastest. His time was: %d ms\n\r", reactionTime); |
quicksandjonas | 2:73b5ca784164 | 132 | LED_0 = 1; |
quicksandjonas | 2:73b5ca784164 | 133 | LED_1 = 1; |
quicksandjonas | 2:73b5ca784164 | 134 | LED_2 = 1; |
quicksandjonas | 2:73b5ca784164 | 135 | LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 136 | winner = 2; |
quicksandjonas | 2:73b5ca784164 | 137 | char command[SER_BUFFER_SIZE]; |
quicksand | 3:1bc9575369bd | 138 | sprintf(command, "AT$SF=06%04x%04x,2,0\n", (int) winner, (int) reactionTime ); |
quicksandjonas | 2:73b5ca784164 | 139 | pc.printf("Sending winner = %i and reaction time = %i ms over Sigfox\n", winner, reactionTime); |
quicksandjonas | 2:73b5ca784164 | 140 | pc.printf("using modem command: %s\n", command); |
quicksandjonas | 2:73b5ca784164 | 141 | modem_command_check_ok(command); |
quicksandjonas | 2:73b5ca784164 | 142 | player1 = false; |
quicksandjonas | 2:73b5ca784164 | 143 | player2= false; |
quicksandjonas | 2:73b5ca784164 | 144 | busyPlaying = false; |
quicksandjonas | 2:73b5ca784164 | 145 | play = false; |
quicksandjonas | 2:73b5ca784164 | 146 | reactionTime = 0; |
quicksandjonas | 2:73b5ca784164 | 147 | pc.printf("\nPress a button to start a new game...\n\r"); |
quicksandjonas | 1:00a17f5a247c | 148 | } |
quicksandjonas | 1:00a17f5a247c | 149 | |
quicksandjonas | 2:73b5ca784164 | 150 | /* Check if a new game has been started, when a game has been started then generate a random time */ |
quicksandjonas | 2:73b5ca784164 | 151 | if(play == true){ |
quicksandjonas | 2:73b5ca784164 | 152 | pc.printf("\nGame has started, push your button as quick as possible when leds go on!\n\r"); |
quicksandjonas | 2:73b5ca784164 | 153 | randomTime = (rand() % 5000)+1; //random wait max 5 seconds |
quicksandjonas | 2:73b5ca784164 | 154 | wait_ms( randomTime + 1000 ); // wait for random time + 1 second |
quicksandjonas | 2:73b5ca784164 | 155 | busyPlaying = true; |
quicksandjonas | 2:73b5ca784164 | 156 | LED_0 = 0; |
quicksandjonas | 2:73b5ca784164 | 157 | LED_1 = 0; |
quicksandjonas | 2:73b5ca784164 | 158 | LED_2 = 0; |
quicksandjonas | 2:73b5ca784164 | 159 | LED_3 = 0; |
quicksandjonas | 2:73b5ca784164 | 160 | } |
quicksandjonas | 2:73b5ca784164 | 161 | |
quicksandjonas | 2:73b5ca784164 | 162 | |
quicksand | 0:6c17d1a79f75 | 163 | } |
quicksandjonas | 1:00a17f5a247c | 164 | } |
quicksandjonas | 2:73b5ca784164 | 165 | |
quicksandjonas | 1:00a17f5a247c | 166 | void modem_setup() |
quicksandjonas | 1:00a17f5a247c | 167 | { |
quicksandjonas | 1:00a17f5a247c | 168 | /* Reset to factory defaults */ |
quicksandjonas | 1:00a17f5a247c | 169 | if(modem_command_check_ok("AT&F")) |
quicksandjonas | 1:00a17f5a247c | 170 | { |
quicksandjonas | 1:00a17f5a247c | 171 | pc.printf("Factory reset succesfull\r\n"); |
quicksandjonas | 1:00a17f5a247c | 172 | } |
quicksandjonas | 1:00a17f5a247c | 173 | else |
quicksandjonas | 1:00a17f5a247c | 174 | { |
quicksandjonas | 1:00a17f5a247c | 175 | pc.printf("Factory reset TD120x failed\r\n"); |
quicksandjonas | 1:00a17f5a247c | 176 | } |
quicksandjonas | 1:00a17f5a247c | 177 | /* Disable local echo */ |
quicksandjonas | 1:00a17f5a247c | 178 | modem.printf("ATE0\n"); |
quicksandjonas | 1:00a17f5a247c | 179 | if(modem_command_check_ok("ATE0")) |
quicksandjonas | 1:00a17f5a247c | 180 | { |
quicksandjonas | 1:00a17f5a247c | 181 | pc.printf("Local echo disabled\r\n"); |
quicksandjonas | 1:00a17f5a247c | 182 | } |
quicksandjonas | 1:00a17f5a247c | 183 | /* Write to mem */ |
quicksandjonas | 1:00a17f5a247c | 184 | if(modem_command_check_ok("AT&W")) |
quicksandjonas | 1:00a17f5a247c | 185 | { |
quicksandjonas | 1:00a17f5a247c | 186 | pc.printf("Settings saved!\r\n"); |
quicksandjonas | 1:00a17f5a247c | 187 | } |
quicksandjonas | 1:00a17f5a247c | 188 | } |
quicksandjonas | 1:00a17f5a247c | 189 | |
quicksandjonas | 1:00a17f5a247c | 190 | bool modem_command_check_ok(char * command) |
quicksandjonas | 1:00a17f5a247c | 191 | { |
quicksandjonas | 2:73b5ca784164 | 192 | /* First clear serial data buffers */ |
quicksandjonas | 1:00a17f5a247c | 193 | while(modem.readable()) modem.getc(); |
quicksandjonas | 1:00a17f5a247c | 194 | /* Timeout for response of the modem */ |
quicksandjonas | 1:00a17f5a247c | 195 | Timeout tmout; |
quicksandjonas | 1:00a17f5a247c | 196 | ser_timeout = false; |
quicksandjonas | 1:00a17f5a247c | 197 | /* Buffer for incoming data */ |
quicksandjonas | 1:00a17f5a247c | 198 | char responsebuffer[6]; |
quicksandjonas | 1:00a17f5a247c | 199 | /* Flag to set when we get 'OK' response */ |
quicksandjonas | 1:00a17f5a247c | 200 | bool ok = false; |
quicksandjonas | 1:00a17f5a247c | 201 | bool error = false; |
quicksandjonas | 1:00a17f5a247c | 202 | /* Print command to TD120x */ |
quicksandjonas | 1:00a17f5a247c | 203 | modem.printf(command); |
quicksandjonas | 1:00a17f5a247c | 204 | /* Newline to activate command */ |
quicksandjonas | 1:00a17f5a247c | 205 | modem.printf("\n"); |
quicksandjonas | 1:00a17f5a247c | 206 | /* Wait untill serial feedback, min 7 seconds before timeout */ |
quicksandjonas | 1:00a17f5a247c | 207 | tmout.attach(&sertmout, 7.0); |
quicksandjonas | 1:00a17f5a247c | 208 | while(!modem.readable()&& ser_timeout == false); |
quicksandjonas | 1:00a17f5a247c | 209 | while(!ok && !ser_timeout && !error) |
quicksandjonas | 1:00a17f5a247c | 210 | { |
quicksandjonas | 1:00a17f5a247c | 211 | if(modem.readable()) |
quicksandjonas | 1:00a17f5a247c | 212 | { |
quicksandjonas | 1:00a17f5a247c | 213 | for(int i = 0; i < 5; i++) |
quicksandjonas | 1:00a17f5a247c | 214 | { |
quicksandjonas | 1:00a17f5a247c | 215 | responsebuffer[i] = responsebuffer[i+1]; |
quicksandjonas | 1:00a17f5a247c | 216 | } |
quicksandjonas | 1:00a17f5a247c | 217 | responsebuffer[5] = modem.getc(); |
quicksandjonas | 1:00a17f5a247c | 218 | if(responsebuffer[0] == '\r' && responsebuffer[1] == '\n' && responsebuffer[2] == 'O' && responsebuffer[3] == 'K' && responsebuffer[4] == '\r' && responsebuffer[5] == '\n' ) |
quicksandjonas | 1:00a17f5a247c | 219 | { |
quicksandjonas | 1:00a17f5a247c | 220 | ok = true; |
quicksandjonas | 1:00a17f5a247c | 221 | } |
quicksandjonas | 1:00a17f5a247c | 222 | else if(responsebuffer[0] == '\r' && responsebuffer[1] == '\n' && responsebuffer[2] == 'E' && responsebuffer[3] == 'R' && responsebuffer[4] == 'R' && responsebuffer[5] == 'O' ) |
quicksandjonas | 1:00a17f5a247c | 223 | { |
quicksandjonas | 1:00a17f5a247c | 224 | error = true; |
quicksandjonas | 1:00a17f5a247c | 225 | } |
quicksandjonas | 1:00a17f5a247c | 226 | } |
quicksandjonas | 1:00a17f5a247c | 227 | } |
quicksandjonas | 1:00a17f5a247c | 228 | tmout.detach(); |
quicksandjonas | 1:00a17f5a247c | 229 | return ok; |
quicksandjonas | 1:00a17f5a247c | 230 | } |
quicksandjonas | 2:73b5ca784164 | 231 | |
quicksandjonas | 1:00a17f5a247c | 232 | /* Button 1 ISR */ |
quicksandjonas | 1:00a17f5a247c | 233 | void sw1interrupt() |
quicksandjonas | 2:73b5ca784164 | 234 | { |
quicksandjonas | 2:73b5ca784164 | 235 | if(play == false && busyPlaying == false){ // If not already playing... |
quicksandjonas | 2:73b5ca784164 | 236 | play = true; |
quicksandjonas | 2:73b5ca784164 | 237 | LED_0 = 1; |
quicksandjonas | 2:73b5ca784164 | 238 | LED_1 = 1; |
quicksandjonas | 2:73b5ca784164 | 239 | LED_2 = 1; |
quicksandjonas | 2:73b5ca784164 | 240 | LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 241 | } |
quicksandjonas | 2:73b5ca784164 | 242 | if(busyPlaying == true && player2 != true){ // When playing and there is no winner yet... |
quicksandjonas | 2:73b5ca784164 | 243 | player1 = true; |
quicksandjonas | 2:73b5ca784164 | 244 | } |
quicksandjonas | 1:00a17f5a247c | 245 | |
quicksandjonas | 1:00a17f5a247c | 246 | } |
quicksandjonas | 1:00a17f5a247c | 247 | |
quicksandjonas | 1:00a17f5a247c | 248 | /* Button 2 ISR */ |
quicksandjonas | 1:00a17f5a247c | 249 | void sw2interrupt() |
quicksandjonas | 2:73b5ca784164 | 250 | { |
quicksandjonas | 2:73b5ca784164 | 251 | if(play == false && busyPlaying == false){ // If not already playing... |
quicksandjonas | 2:73b5ca784164 | 252 | play = true; |
quicksandjonas | 2:73b5ca784164 | 253 | LED_0 = 1; |
quicksandjonas | 2:73b5ca784164 | 254 | LED_1 = 1; |
quicksandjonas | 2:73b5ca784164 | 255 | LED_2 = 1; |
quicksandjonas | 2:73b5ca784164 | 256 | LED_3 = 1; |
quicksandjonas | 2:73b5ca784164 | 257 | } |
quicksandjonas | 2:73b5ca784164 | 258 | if(busyPlaying == true && player1 != true){ // When playing and there is no winner yet... |
quicksandjonas | 2:73b5ca784164 | 259 | player2 = true; |
quicksandjonas | 2:73b5ca784164 | 260 | } |
quicksandjonas | 2:73b5ca784164 | 261 | |
quicksandjonas | 1:00a17f5a247c | 262 | } |
quicksandjonas | 1:00a17f5a247c | 263 | |
quicksandjonas | 1:00a17f5a247c | 264 | /* ISR for serial timeout */ |
quicksandjonas | 1:00a17f5a247c | 265 | void sertmout() |
quicksandjonas | 1:00a17f5a247c | 266 | { |
quicksandjonas | 1:00a17f5a247c | 267 | ser_timeout = true; |
quicksandjonas | 1:00a17f5a247c | 268 | } |