esp8266平台编译错误?找不到蓝牙头文件?
Closed this issue · 35 comments
- 我在搭建好编译环境之后,make menuconfig之后,开始编译 make 之后发现报错如下:
- 纳闷的是,根据提示好像找不到 与蓝牙相关的头文件? esp8266和蓝牙没关系啊?
CC build/esp-joylink/port/app/joylink_app.o
E:/Espressif/Esp32/esp-idf/home/XuHongYss/ESP8266_RTOS_SDK/MyProject/esp-joylink/port/app/joylink_app.c:29:29: fatal error: esp_gap_ble_api.h: No such file or directory
compilation terminated.
make[1]: *** [/home/XuHongYss/ESP8266_RTOS_SDK/make/component_wrapper.mk:286:port/app/joylink_app.o] 错误 1
make: *** [E:/Espressif/Esp32/esp-idf/home/XuHongYss/ESP8266_RTOS_SDK/make/project.mk:467:component-esp-joylink-build] 错误 2
- 原因找到了!现在的sdk区别是 esp8266或者是esp32的宏定义不是
CONFIG_IDF_PLATFORM_ESP8266
,而是CONFIG_TARGET_PLATFORM_ESP8266
!!!
8266用打上TAG的3.1分支
commit号是:db1b044312f1260ccf0ce08e0ff8a31f1e5e9acc
@xuhongv 是不是你配网的时候,没有把密码输进去?
- 是否我的操作有问题?
- app端使用的是 小京鱼 安卓端 v6.3.2 build:55135_沙箱
在 joy link_extern.c
里面, 名字叫 CONFIG_JOYLINK_PRIVATE_KEY
如果你云端的设备是在1月15号之后才注册的,需要添加这个key,这个key 需要你将你调试的设备 MAC地址上传上去,才可以拿到
- 请问这个CONFIG_JOYLINK_PRIVATE_KEY 在 make menuconfig 没找到的?
- 对的。。目前我在串口看到配网成功,app显示激活失败!万分感谢!这边公司项目需要用到!尽快!谢谢!
@xuhongv 你现在拉下最新分支呢
- thanks
- 为什么现在配网成功了!再一次上电之后进去配网模式?
- 以及贵方提供的 light_demo 的对京东的上报和下发处理的数据业务在哪呢?
目前 master 分支上,没有存 SSID和PASSWORD, 暂时你可以忽略这一点,今天会提上去。
另一个问题,如果你是自定义的设备,需要自己适配下你自己的设备,云端下发的数据接口你看下这个API joylink_dev_script_ctrl
, 上报的话 你看下这个API joylink_dev_user_data_get
, 这里你需要自己实现,针对你自己的设备
- 原因找到了。个人已经解决!希望贵方可以把这个
为什么现在配网成功了!再一次上电之后进去配网模式?
修复!多谢!!
我先给你个patch
好的!等待你们的更新!我目前仍然找不到哪个方法通知 京东SDK 来连接服务器!目前我可以自动连接路由器了!
你打上我上面发的那个patch,应该就可以自动连接京东的服务的,现在遇到的问题是?
感谢!补丁打完之后,可以自动连接服务了!!目前遇到的问题是如何主动把数据推送到服务器?有应用示范吗?您上面仅仅给我一个方法名字 joylink_dev_user_data_get
。
云端会回调这个函数来获取设备的状态,在应用代码中,你今需要在这个函数里,把设备的数据给到这个函数的参数的指针指向的地方就可以了
简单的说, 你只要在本地弄个全局变量,然后 memcpy到这个函数的参数指针里就好了,注意数据格式要一样, 如果你的设备参数类型很多的话,注意默认设备快照的长度不能超过1400, 如果超过,你需要在代码里改一下默认最大长度限制,你先试一下是否可以
嗯!我能理解您的意思!我现在的业务是有个按键控制8266,当按键使能时候,会改变状态,然后必须主动推送消息控制面板!但是您上面说的只是云端会通过此函数来获取最新状态,但是不知何时会来获取?这是一个问题!
这个延时,肉眼可以忽略,你可以试一下
设备只要给云端发送一次心跳包,服务器就会来回调一次状态
举个例子,下面这个结构体是你注册的设备的属性:
typedef struct _user_dev_status_t {
int Power;
int Mode;
} user_dev_status_t;
然后你定义一个全局变量来保存设备的状态
user_dev_status_t user_dev;
如果你本地有其他物理按键或者其他的操作,改变了这个设备的状态,你就该下这个变量里对应的参数的值
服务器回调那里就这么写:
int joylink_dev_user_data_get(user_dev_status_t *user_data)
{
/**
*FIXME:must to do
*/
memcpy(user_data, &user_dev, sizeof(user_dev_status_t));
return 0;
}
如果是云端有控制下来,你就在下面这个API里解析json字段,把相应的参数值复制给这个记录状态信息的全局变量
int joylink_dev_parse_ctrl(const char *pMsg, user_dev_status_t *userDev);
大概意思就是如此,可以参考下
这个issues太长了,每次拉我都要刷新好一会,我先关掉这个issues,你有问题再提一个吧