void close_file(file_t * file) { clean_term(file->term); clean_renderer(file->rend); clean_buff(file->buff); clean_buff(file->modbuff); clean_keys(); }
int main(int ac, char **av) { int yes; int beg; char **map; yes = 0; beg = 0; clean_term(); while (!yes) { map = recup_maps(); if (!(map[0])) return (0); if (beg != 0) aff_delim(); bt_check_grids(map, 0); aff_grids(map); beg++; } return (0); }
// Task odbioru i analizy znakow z konsoli void vConsoleRxTask (void *pvparameters) { char special=0; char i = 0; char command_buffer[CMD_MAX_LEN]; char *ptr_cmd_buf = command_buffer; char onechar; //utworz kolejke znakow RxQueue = xQueueCreate(100, sizeof( portCHAR ) ); for (;;) { //vTaskDelay(10 / portTICK_RATE_MS); while(xQueueReceive(RxQueue,&onechar,portMAX_DELAY)) { // sprawdzamy wstepnie czy to znak specjalny (wszelkie strzalki, delete) if (onechar == 0x5b ||onechar == 0x1b) { special = 1; } //sprawdz czy to byla strzalka w gore else if (special && onechar == 0x41 ) { //skasuj wyswietlona z historii komende i przygotuj dla poprzedniej clean_term(ptr_cmd_buf); //wczytaj poprzednia komende przewinwtyl(com_cmd_hist, ptr_cmd_buf); //wyswietla te komnde na rs print_console(ptr_cmd_buf); //print_char(0, user.prom(&user)); i= (char)strlen(ptr_cmd_buf); // deaktywacja sekwencji sterujacej special = 0; } //przyjmuj tylko znaki z przedzialu a-z 0-9 spacja, enter, backspace,itd. //uwaga na strzalki, wysylaja po 2 znaki: A+costam oraz B+costam else if(( (onechar >= 'a' && onechar <= 'z') || (onechar >= 'A' && onechar <= 'Z') || (onechar >= '0' && onechar <= '9') || onechar == ' ' || onechar == '.' || onechar == '-' || onechar == '_' || onechar == '+' || onechar == '?' || onechar == '@' )&&(!special) ) { //echo dla wpisanego znaku usart_put_char(onechar); //zabezpieczenie przed przekroczeniem tablicy if(i < CMD_MAX_LEN) { *(ptr_cmd_buf + i) = onechar; i++; } } //sprawdz czy to byl backspace else if (onechar == BS) //backspace { //sprawdz czy index jest jeszcze w dopuszczlnym obszarze, //z lewej i z prawej strony if(i > 0 && i < CMD_MAX_LEN) { usart_put_char(BS); //wyczysc ostatni znak *(ptr_cmd_buf + i) = 0x0; //przesun o 1 do tylu aktualny indeks bufora i--; } } //jesli jakikolwiek inny klawisz ze znakow specjalnych else if(special) special = 0; //sprawdz czy to byl enter lub koniec transmisji else if (onechar == EOT || onechar ==LF || onechar ==CR_CM || onechar==ETB) { //usart_put_string("\r\n"); //usart_put_char((char*)LF); //usart_put_char((char*)CMD_PRMT); //zakoncz c-stringa znakiem konca= '\0' *(ptr_cmd_buf + i) = '\0'; //skopiuj te komende do kolejki przyjetych komend //add_to_history_cmd(com_cmd_hist, ptr_cmd_buf); //interpretacja komend interpreter(ptr_cmd_buf, i, NULL,ptr_cmd_buf); //przygotuj indeks pod nastepna komende na poczatek bufora i= 0; //byl ENTER, wiec ustaw ze nie kasuje nic STRZALKA W GORE wypisujaca z historii was_hist = 0; } } } }