void esp8266_set_echo(bool new_state) { if (new_state == true) { esp8266_send_command(TYPE_SET_EXECUTE, ATE1); } else { esp8266_send_command(TYPE_SET_EXECUTE, ATE0); } }
void esp8266_set_mode(u8 mode) { if ((mode > 3) || mode == 0) { return; // Only 1, 2, 3 } at_cwmode_se = calloc(16, sizeof(char)); sprintf(at_cwmode_se, "AT+CWMODE=%d\r\n", mode); esp8266_send_command(TYPE_SET_EXECUTE, AT_CWMODE); free(at_cwmode_se); }
void esp8266_connection_mode(u8 mode) { if ((mode != 1) && (mode != 0)) { return; // Only 0 or 1 } at_cipmux_se = calloc(16, sizeof(char)); sprintf(at_cipmux_se, "AT+CIPMUX=%d\r\n", mode); esp8266_send_command(TYPE_SET_EXECUTE, AT_CIPMUX); esp8266_wait_for_answer(); free(at_cipmux_se); }
void esp8266_close_connect(Esp8266 *esp,Esp8266Connect *connect){ return ; //Не работает на прошивке 0.21 баг в модуле! char buffer_str[100]; char channel_number[1]; itoa(connect->id,channel_number,10); memset(buffer_str,0,100); strcat(buffer_str,"AT+CIPCLOSE="); strcat(buffer_str,channel_number); strcat(buffer_str,"\r\n"); esp8266_send_command(esp,buffer_str); esp->closing_connect = connect; }
void esp8266_join_ap(char* ap, char* password) { // prepare credentials: char buffer[70]; sprintf(buffer, "AT+CWJAP=\"%s\",\"%s\"\r\n", ap, password); at_cwjap_se = calloc(strlen(buffer), sizeof(char)); strcpy(at_cwjap_se, buffer); esp8266_send_command(TYPE_SET_EXECUTE, AT_CWJAP); esp8266_wait_for_answer(); free(at_cwjap_se); }
void esp8266_send_data(char* ip_address, u16 port, Protocol protocol, char* data, u8 length) { // Establish connection with remote host char buffer[256]; char *proto; proto = calloc(4, sizeof(char)); if (protocol == TCP) { strcpy(proto, "TCP"); } else if (protocol == UDP) { strcpy(proto, "UDP"); } current_protocol = protocol; sprintf(buffer, "AT+CIPSTART=\"%s\",\"%s\",%u\r\n", proto, ip_address, port); at_cipstart_se = calloc(strlen(buffer) + 1, sizeof(char)); strcpy(at_cipstart_se, buffer); esp8266_send_command(TYPE_SET_EXECUTE, AT_CIPSTART); esp8266_wait_for_answer(); // Send data sprintf(buffer, "AT+CIPSEND=%u\r\n", length); at_cipsend_se = calloc(strlen(buffer) + 1, sizeof(char)); strcpy(at_cipsend_se, buffer); esp8266_send_command(TYPE_SET_EXECUTE, AT_CIPSEND); esp8266_wait_for_answer(); at_data_buffer = calloc(length + 1, sizeof(u8)); strncpy(at_data_buffer, data, length); usart2_print("+"); esp8266_send_command(TYPE_SET_EXECUTE, AT_SEND_DATA); esp8266_wait_for_answer(); free(proto); free(at_cipsend_se); free(at_cipstart_se); free(at_data_buffer); }
bool esp8266_check_presence(void) { esp8266_send_command(TYPE_INQUIRY, AT); esp8266_wait_for_answer(); return true; }
void esp8266_cwlap(Esp8266 *esp){ esp8266_send_command(esp,"AT+CWLAP\r\n"); }
void esp8266_gmr(Esp8266 *esp){ esp8266_send_command(esp,"AT+GMR\r\n"); }
void esp8266_cipapmac(Esp8266 *esp){ esp8266_send_command(esp,"AT+CIPAPMAC?\r\n"); }
void esp8266_cwmode(Esp8266 *esp){ esp8266_send_command(esp,"AT+CWMODE?\r\n"); }
void esp8266_at(Esp8266 *esp){ esp8266_send_command(esp,"AT\r\n"); }
void esp8266_close_connection(void) { esp8266_send_command(TYPE_SET_EXECUTE, AT_CLOSE); esp8266_wait_for_answer(); }
void esp8266_reset(void) { esp8266_send_command(TYPE_SET_EXECUTE, AT_RST); esp8266_wait_for_answer(); }
char* esp8266_get_ip_addresses() { esp8266_send_command(TYPE_TEST, AT_CIFSR); esp8266_wait_for_answer(); esp8266_wait_for_answer(); return ""; }
void esp8266_get_connected_ap() { esp8266_send_command(TYPE_INQUIRY, AT_CWJAP); esp8266_wait_for_answer(); }
void esp8266_get_list_of_aps() { esp8266_send_command(TYPE_SET_EXECUTE, AT_CWLAP); esp8266_wait_for_answer(); }