Files
bishe-STM32/Hardware/esp8266.h
T
2026-05-21 08:07:16 +08:00

104 lines
3.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __ESP8266_H
#define __ESP8266_H
#include "stm32f10x.h"
// 定义布尔类型,方便返回状态
#define ESP8266_SUCCESS 1
#define ESP8266_FAIL 0
// 时间结构体
typedef struct {
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minute;
uint8_t second;
} ESP8266_DateTime;
/*
--- 公共函数接口 ---
*/
/**
* @brief 对ESP8266模块进行基础设置
* @retval 1 表示成功, 0 表示失败
*/
// 函数作用:初始化 ESP8266 模块并配置基础 AT 工作模式。
uint8_t ESP8266_Setup(void);
/**
* @brief 命令ESP8266连接到指定的WiFi网络
* @param ssid 要连接的WiFi名称 (SSID)
* @param password WiFi的密码
* @retval 1 表示成功, 0 表示失败
*/
// 函数作用:控制 ESP8266 连接指定 WiFi 网络。
uint8_t ESP8266_ConnectWiFi(const char* ssid, const char* password);
/**
* @brief 命令ESP8266连接到HTTP服务器(新增)
* @param ip 服务器的IP地址
* @param port 服务器的端口号
* @retval 1 表示成功, 0 表示失败
*/
// 函数作用:控制 ESP8266 与指定 HTTP 服务器建立 TCP 连接。
uint8_t ESP8266_ConnectHTTPServer(const char* ip, const char* port);
/**
* @brief 通过ESP8266发送HTTP POST请求(新增 - 加密版本)
* @param encrypted_data 加密后的Base64数据
* @retval 1 表示成功, 0 表示失败
*/
// 函数作用:通过 ESP8266 发送加密后的考勤 HTTP POST 数据。
uint8_t ESP8266_SendEncryptedData(const char* encrypted_data);
/**
* @brief 检查TCP连接是否正常
* @retval 1 表示已连接, 0 表示未连接
*/
// 函数作用:检查 ESP8266 当前 TCP/网络连接是否仍然可用。
uint8_t ESP8266_CheckConnection(void);
/**
* @brief 从网络获取当前时间(NTP/SNTP)
* @param datetime 时间结构体指针,用于存储获取的时间
* @retval 1 表示成功, 0 表示失败
*/
// 函数作用:从网络时间服务或服务端接口获取当前日期时间。
uint8_t ESP8266_GetNetworkTime(ESP8266_DateTime* datetime);
/**
* @brief 发送HTTP GET请求并接收响应(新增)
* @param path 请求路径(如"/api/v1/config/time-slots")
* @param response_buffer 接收响应数据的缓冲区
* @param buffer_size 缓冲区大小
* @retval 1 表示成功, 0 表示失败
*/
// 函数作用:通过 ESP8266 发起 HTTP GET 请求并把响应写入缓冲区。
uint8_t ESP8266_HttpGet(const char* path, char* response_buffer, uint16_t buffer_size);
/**
* @brief 查询学生在指定时段是否已签到(服务器端查重)
* @param student_id 学号
* @param slot_start 时段开始时间(格式"HH:MM")
* @param slot_end 时段结束时间(格式"HH:MM")
* @retval 1 表示已签到(重复), 0 表示未签到
*/
// 函数作用:调用服务端查重接口,判断学生在指定时段是否已签到。
uint8_t ESP8266_CheckDuplicate(const char* student_id, const char* slot_start, const char* slot_end);
/**
* @brief 下载今日已签到学生列表(开机时调用)
* @param slot_start 时段开始时间(格式"HH:MM")
* @param slot_end 时段结束时间(格式"HH:MM")
* @param student_ids 输出:学号数组(逗号分隔的字符串)
* @param buffer_size 缓冲区大小
* @retval 成功下载的学号数量
*/
// 函数作用:下载指定时段内今日已签到学生列表,用于本地去重缓存恢复。
uint8_t ESP8266_DownloadTodayRecords(const char* slot_start, const char* slot_end, char* student_ids, uint16_t buffer_size);
#endif