void get_bt_status(void) { int key; char show_buffer[50]; char des[10] = {0}; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙状态 "); serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+STATUS\r\n", sizeof("AT+STATUS\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 20, 300); if(!strncmp(show_buffer, "+STATUS=", sizeof("+STATUS=") - 1)){ des[0] = show_buffer[sizeof("+STATUS=") - 1]; if (strcmp(des, "2") == 0) lcd_disp_string(0, 16, "蓝牙已连接"); else if (strcmp(des, "1") == 0) lcd_disp_string(0, 16, "蓝牙广播中..."); else if (strcmp(des, "0") == 0) lcd_disp_string(0, 16, "蓝牙空闲"); else lcd_disp_string(0, 16, "未知状态"); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }
void get_mac(void) { int key; char show_buffer[64]; char addr[18]; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙MAC地址 "); /*获取蓝牙地址*/ serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+LADDR\r\n", sizeof("AT+LADDR\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 64, 300); if(!strncmp("+LADDR=", show_buffer, 7)){ memcpy(addr, show_buffer + 7, 17); lcd_disp_string(0, 16, addr); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }
void get_name(void) { int key, i; char show_buffer[64] = {0}; char name[17] = {0}; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙名称 "); /*获取蓝牙地址*/ serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+NAME\r\n", sizeof("AT+NAME\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 64, 300); if(!strncmp("+NAME=\"", show_buffer, 7)){ for(i = 0; i < 16; i ++) { if (show_buffer[7 + i] == '\"') break; name[i] = show_buffer[7 + i]; } lcd_disp_string(0, 16, name); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }
int bluetooth_test(int mode) { int key; char show_buffer[50]; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙测试 "); lcd_disp_hline(0, 13, 128); lcd_disp_string(0, 16, "1.名称获取 2.MAC获取"); lcd_disp_string(0, 30, "3.获取状态 4.串口直连"); key = kb_get_key(0); switch (key) { case KEY_1: get_name(); break; case KEY_2: get_mac(); break; case KEY_3: get_bt_status(); break; case KEY_4: connect_uart(); break; case KEY_POUND: serial_write(CONFIG_BT_SERIAL_NUM, "AT+ADV\r\n", sizeof("AT+ADV\r\n"));//开启广播 serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 50, 300); break; case KEY_ASTERISK: serial_write(CONFIG_BT_SERIAL_NUM, "AT+DISC\r\n" , sizeof("AT+DISC\r\n" ));//断开连接 serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 50, 300); break; case KEY_ESC: serial_write(CONFIG_BT_SERIAL_NUM, "AT+DISC\r\n", sizeof("AT+DISC\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 30, 300); return 0; default: break; } } }
void *ui_thread(void *argument) { char str[80]; char new_user[20]; char time[20]; char user[20]; char message[80]; int row, col, y, x, chat_line, user_line, buffer, tick; initscr(); /* start the curses mode */ ncurses_initialized = 1; start_color(); init_pair(1, COLOR_CYAN, COLOR_BLACK); getmaxyx(stdscr,row,col); /* get the number of rows and columns */ attron(COLOR_PAIR(1)); printw("\t\tType 'EXIT' to quit the program."); refresh(); attroff(COLOR_PAIR(1)); x=col/1.38; y=row-6; user_line = 1; chat_line = 1; w_chat = newwin(y, x, 1, 1); w_input = newwin(3, x, y+1, 1); w_user = newwin(y, col/6, 1, x+2); w_time = newwin(3, col/6, y+1, x+2); /*Create panels for each window*/ box(w_chat, ACS_VLINE, ACS_HLINE); box(w_input, ACS_VLINE, ACS_HLINE); box(w_user, ACS_VLINE, ACS_HLINE); box(w_time, ACS_VLINE, ACS_HLINE); /*TODO: Display ticking time in the bottom right panel * TODO: Displaying all users in chat room * TODO: Displaying received input * TODO: Displaying sent input */ mvwprintw(w_user, user_line, 1, "%s", login.username); user_line++; while(true){ refresh_all(); if(kb_has_key() == true){ buffer = 0; //placeholder until keyboard.c code is implemented while(buffer < 80 && kb_has_key() == true) { str[buffer] = kb_get_key(); mvwaddch(w_input,1, buffer+1, str[buffer]); buffer++; refresh_all(); } } if(strcmp(str, "EXIT") == 0){ endwin(); return 0; } if(chat_line > 28){ chat_line = 1; wclear(w_chat); box(w_chat, ACS_VLINE, ACS_HLINE); refresh_all(); } //placeholder /* if(has_new_user() == true){ strcpy(new_user, get_user()); mvwprintw(w_user, user_line, 1, "%s", new_user); user_line++; attron(COLOR_PAIR(1)); mvwprintw(w_chat, chat_line, 1, "%s has joined the chat", new_user); attroff(COLOR_PAIR(1)); chat_line++; refresh_all(); } //placeholder until has_message is implemented in some form /* if(has_message() == true){ //placeholders strcpy(time, get_time()); if(get_user() == NULL){ strcpy(user, "SYSTEM"); } else{ strcpy(user, get_user()); } strcpy(message, get_message()); mvwprintw(w_chat, chat_line, 1, "[%s]<%s> %s", time, user, message); chat_line++; } */ //placeholder tick = get_elapsed_ticks(); mvwprintw(w_time, 1, 1, "%i", tick); } }