void print(char s[]){ /* Envia pel port serie tots el elements de la taula s fins que troba un simbol de final de paraula */ uint8_t i=0, c; while(s[i]!='\0'){ serial_put(s[i]); i++; } serial_put('\r'); serial_put('\n'); }
static void serial_puts(char *str) { for (; *str != '\0'; str++) { if (*str == '\n') serial_put('\r'); serial_put(*str); } }
void tick_monitor(void){ /*Determina si hi ha alguna ordre del supervisor per llegir. Les ordres segueixen el protocol que s'ha explicat a l'apartat 2.1. Si és el cas la llegeix i executa l'acció associada a l'ordre.*/ uint8_t char_order; /*Declarem la variable per a enmagatzemar la lletra que rebem.*/ if(serial_can_read()){ /*Si hi ha informació rebuda, llegeix-la. En cas contrari, salta tot el procés.*/ char_order = serial_get(); /*Rep l'irdre.*/ if(char_order == 'E'){ /*Si hem rebut la "E" ves al procés d'emergencia.*/ if (state!=Off){ /*Si el semafor está parat no facis el procés.*/ state = Clear; /*Posa en verd el semafor.*/ semaphore_set(state); ticks_remaining = 40; /*Reinicia el temps d'estar amb el semafor en verd.*/ /*Enviem el missatge que indica que s'ha cambiat correctament el semafor*/ serial_put('E'); serial_put('M'); serial_put('E'); serial_put('R'); serial_put('G'); serial_put('E'); serial_put('N'); serial_put('C'); serial_put('Y'); serial_put('\n'); } else { /*Si tenim el semafor parat, retorna una "N"*/ serial_put('N'); serial_put('\n'); } } else if(char_order == 'S'){ /*Si hem rebut la "S" ves al procés d'apagat.*/ if(state != Off){ /*Si el semafor está parat no facis el procés.*/ state=Off; /*Posa en verd el semafor.*/ semaphore_set(state); /*Enviem el missatge que indica que s'ha apagat correctament el semafor*/ serial_put('S'); serial_put('H'); serial_put('U'); serial_put('T'); serial_put('D'); serial_put('O'); serial_put('W'); serial_put('N'); serial_put('\n'); } else{ serial_put('J'); serial_put('\n'); } } else if(char_order == 'R'){ /*Si hem rebut la "R" ves al procés d'start.*/ if(state == Off){ /*Si el semafor está parat fes el procés.*/ state = Clear; /*Posa en verd el semafor.*/ semaphore_set(state); ticks_remaining = 40; /*Reinicia el temps d'estar amb el semafor en verd.*/ /*Enviem el missatge que indica que s'ha encés correctament el semafor*/ serial_put('R'); serial_put('E'); serial_put('S'); serial_put('T'); serial_put('A'); serial_put('R'); serial_put('T'); serial_put('\n'); } else{ serial_put('J'); serial_put('\n'); } } } }