# wifi模块功能设计文档 ## 红外模块设计 ### 红外工作逻辑 #### 红外工作需要注意细节 1. 红外模块在触发后需要手动设置为低电平才能继续工作 2. 检测物在检测范围内持续运动会导致多次触发 #### 红外检测场景 1. 检测物进入检测范围 2. 检测物在检测范围内持续保持运动 3. 检测物短时间内快速进出检测范围 4. 检测物在离开有一段时间(可能几秒)后重新进入检测范围 #### 工作情况设计 1. 红外触发后就(等待100ms)将其设置为低, 重新开始检测 2. 设置红外锁, 只有在没触发一段时间后才允许再次进行任务 #### 外部接口设计 1. 灵敏度调整接口 在条件灵敏度时, 将中断移除, 等配置完灵敏度后在重新设置io口的中断 2. 红外检测的启用与禁用接口 用于在其它模块中暂时地禁用红外模块的检测功能 #### 内部接口 1. 红外中断的注册 2. 中断移除 3. 定时回调任务 ## 休眠模块设计 ### 模块需求 1. 能够注册定时任务, 用于在休眠模式下也能够正常地执行一些任务 2. 定时mqtt心跳发送 ### 休眠模块工作逻辑 1. 模块在启动后就尝试进入休眠模式 2. 使用投票机制来确定是否进入休眠模式 3. 功能模块内部自行管理投票 4. 能够配置休眠时间 ### 休眠模块内部接口设计 1. 开启休眠模式 2. 关闭休眠模式 3. 定时任务触发 ### 休眠模块外部接口设计 1. 配置休眠时间 2. 定时任务注册 ## wifi连接模块设计 ### 模块需求 1. 给出指定的wifi名称和密码即可连接到对应wifi 2. 连接新的wifi的功能 3. 重新连接wifi的功能 4. 配置wifi的功能 ### 工作逻辑 1. 模块启动后, 首先尝试连接已经配置保存好的WIFI 2. 连接wifi成功后, 尝试连接至mqtt服务器 3. 配置wifi后, 直接尝试连接, 如果连接成功则保存密码. 4. 重新配置wifi,先断开连接, 然后在尝试用新的wifi配置进行连接 ### 内部接口设计 1. 获取匹配的WiFi列表 2. 连接到指定wifi 必须是被扫描到的. 3. 配置wifi. 该接口需要加上保存密码的这一项. 且最后要尝试调用mqtt连接的功能 4. 重连wifi