Files
SR_Switch_Hilink_14.2.0.308…/readme.md
2025-07-05 23:40:20 +08:00

131 lines
8.1 KiB
Markdown
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.

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Build and Development Commands
1. **Build the project**: Run `python build.py` from the root directory.
2. **Clean build artifacts**: Run `python build.py clean`.
3. **Flash the device**: Use the `hfloader` tool with the appropriate firmware file.
## Key Codebase Structure
1. **Entry Point**: `application/ws63/user_main/app_main.c` contains `user_app_main`, the main entry point for the application.
2. **Hilink Integration**:
- `application/samples/wifi/ohos_connect/hilink_adapt/entry/hilink_ble_main.c` is the Hilink SDK configuration and setup entry.
- `application/samples/wifi/ohos_connect/hilink_adapt/product/hilink_device.c` maps physical models to cloud models.
3. **Physical Model Control**:
- GPIO and LED controls are defined in `application/ws63/hsf`.
- Reference implementations are in `refence/LPT26x-HSF-4MB-Hilink_14.2.0.308_20250411`.
4. **Device Configuration**:
- `build/config/target_config/ws63/config.py` contains build configurations.
- `application/samples/wifi/ohos_connect/hilink_adapt/product/device_profile.h` defines device metadata.
## Important Notes
- **Flash Storage**: Device states (switch, LED, etc.) must be saved to flash immediately after modification.
- **Cloud Sync**: Implement logic in `HILINK_NotifyDevStatus` for online/offline state handling.
- **Physical and APP Control**: Ensure synchronization between physical button presses and APP controls.
## Reference Code
- Review `refence/LPT26x-HSF-4MB-Hilink_14.2.0.308_20250411` for examples of Hilink integration and device control.
你是一个资深的物联网嵌入式工程师。这里有一个基于完善的一个智能家居的sdk进行开发的需求其是基于汉枫(hf)模组+鸿蒙系统(ohos)开发的。
## SDK 相关介绍
1. hf模组SDK提供了硬件的控制的相关接口
2. ohos SDK 提供了设备和云端交互的一系列接口。
整个SDK是比较庞大的不过我们着重关注以下内容
1. application/samples/wifi/ohos_connect/hilink_adapt/entry/hilink_ble_main.c 包含了一系列hilink 的配置和配网是hf sdk和ohos之间接洽的入口
其中 hilink_ble_main 是整个hilink sdk相关配置的入口
2. application/samples/wifi/ohos_connect/hilink_adapt/product/hilink_device.c 包括了物理模型和云端模型的映射
SVC_INFO 是物理模型和云端模型的映射关系,
其中handle_get_xxx是云端模型获取物理模型的数据handle_put_xxx是云端模型设置物理模型的数据。
3. application/ws63/user_main 用户自定义程序代码放置的地方入口
4. application/samples/wifi/ohos_connect/hilink_adapt/product/device_profile.h 设备的基本信息包括设备型号、设备名称、设备ID等
5. application/ws63/hsf 所有hf sdk的接口都在这里包括了flash、gpio、uart、wifi、net、update、crypto、thread、product、net、ntp、debug_print等。
6. application/samples/peripheral 里面包含hf模组提供一些外设的控制示例代码可供参考。
7. build/config/target_config/ws63/config.py 是整个工程的编译配置文件
8. indie_upg.md 是关于支持hilink独立升级如何修改代码的说明文档可供参考
通过以上信息你已经可以基本了解整个SDK的运作的原理
## 参考已有铲平的代码
这部分非常重要里面有很多的hilink配网和云端交互等的示例可以帮助你更好的编写代码请你仔细分析
refence/LPT26x-HSF-4MB-Hilink_14.2.0.308_20250411
这是此前的一款射灯产品的源码,里面核心的几个文件夹为:
refence/LPT26x-HSF-4MB-Hilink_14.2.0.308_20250411/application/ws63/user_main
refence/LPT26x-HSF-4MB-Hilink_14.2.0.308_20250411/application/samples/wifi/ohos_connect/hilink_adapt/product/
你可以参考看看里面能够复用的部分!
## 软件相关的定义如下:
1. 其物理模型2Q4G.json但是里面的netInfo timer update这几个是hilink内部已经实现无需我们关心我们只需要关心switch3、switch2、switch1、switch4 switch这几个物理模型。
1. switch 是整个面板的总开关,其是属于一个软件上的控制,只有当其属于打开状态时其他的开关才允许控制
2. switch1->switch4 是对应四个物理开关每个switch可以控制对应的一个开关。
## 物理连接相关定义及其中一些信息进行补充:
GPOP00 <--> LED1
GPOP02 <--> LED2
GPOP05 <--> LED3
GPOP10 <--> LED4
LED1->LED4是控制面板的每个按键的指示灯其高电平表示指示灯白灯低电平表示指示灯亮黄灯所以按键的指示灯无论如何都是有的只是颜色有区别。
GPOP12 <--> C1
GPOP13 <--> C2
GPOP14 <--> C3
GPOP07 <--> C4
C1->C4 是负责实际的开关的控制,是输出端口,高电平表示开关接通,低电平表示开关断开。
GPOP09 <--> KEY1
GPOP04 <--> KEY2
GPOP11 <--> KEY3
GPOP08 <--> KEY4
KEY1->KEY4是物理按键书输入端口接收用户的物理按下信号。低电平表示按键按下闭合高电平表示按键松开。
GPOP03 <--> LED
LED 是整个控制面板的背光灯,高电平亮灯(黄色),低电平灭灯(无背光)
## 需求分析
### 设备的一些信息需要存储在flash中
1. 设备的每个按键的开关状态
2. 设备的背光灯状态
3. 设备的总开关状态
4. 设备的配网状态
### 物理按键和APP按键控制要统一
设备可以通过APP进行控制也可以通过物理按键进行控制通过物理按键进行控制时也需要存储按键的开关状态APP控制时也需要存储按键的开关状态。这样二者的信息能够统一同步
### 每个按键的的指示灯和开关状态需要同步,当按键按下时,指示灯亮,当按键松开时,指示灯需要保持长亮。
### 你需要在HILINK_NotifyDevStatus对应的 HILINK_M2M_CLOUD_ONLINE 和 HILINK_M2M_CLOUD_OFFLINE 中添加对应的逻辑,当设备上线时,需要将按键的开关状态和指示灯状态进行同步,当设备下线时,需要将按键的开关状态和指示灯状态进行同步。
### 你需要在 HILINK_DEVICE_UNREGISTER 中添加对应的逻辑,当设备被删除时,需要将按键的开关状态和指示灯状态进行同步。
### 设备的按键状态的修改请立即进行保存,避免突然断电导致状态丢失。
### 设备上线后才能立即进行同步所有物模型信息避免APP界面异常
## 软件编写规范
1. 实现需求需要在application/ws63/user_main另外新建文件夹(命名你根据产品需求定义)实现相关逻辑
### SORONTEK智能面板产测
1.由信标发送产测信号
=》识别固定的热点名作为进入产测的信号
2.开关循环开1-开2-开3-开4-全关-全开-全关
3.每1.5秒执行一个动作
4. 需要校验WIFI 信号强度吗?(射灯有此逻辑)
### SORONTEK智能面板配网
1. 只有设备处于未绑定状态才能进行配网(出厂或者被APP删除)
=》 设备处于出厂状态需要立刻进入配网。
2. 长按开关左上角第一个按键10秒, 进入配网面板背光灯快闪1秒表示开关已进入配网状态
3. 配网中途只有被按下的按键的指示灯进行闪烁固定1HZ闪烁其他按键指示灯保持长亮
4. 配网超时10分钟超时未配网按键指示灯恢复长亮
=》前三分钟指示灯保持闪烁,后七分钟指示灯保持长亮。
## 其他补充信息
### 出厂/复位 SORONTEK智能面板默认状态
1. 所有开关控制其处于断开状态
2. 所有按键指示灯处于黄灯常量状态
3. 面板背光灯处于常亮(黄灯)状态
程序入口在 application/ws63/user_main/app_main.c 里面的 user_app_main 里面调用
来自云端的控制信号从 application/samples/wifi/ohos_connect/hilink_adapt/product/hilink_device.c 中的 handle_put_xxx中接受所以需要在这里面call对应的实际控制函数
上报使用 fast_report函数传入对应的svc_id子串即可
现在需要请你帮我实现一个四开关面板程序功能
请先分析需求,拆解步骤,然后逐步进行编码。