数据对接

一、概述

1.说明

页面数据的使用显示流程已经搭建完成,用户只需要将自己的数据源按照固定格式写入即可完成数据对接的工作。
所有的数据处理均放在文件《app_tool_data.c》中。

2.数据类型

数据类型主要分为5类:时间日期、系统数据、应用数据、传感器数据、手机数据。
用户可以自行新增数据类型的定义,只需要保持GUI Builder和固件端的id值相同即可。在工具端新增了数据源以后,点击导出可以生成文件《app_tool_data_id.h》,其中包含了所有数据源的枚举值。
数据id的定义可以查看《SiFli GUI Builder数据对照表》。

3.数值类型

数值类型主要分为三类:数值,数组,字符串。
数值和数组的数据格式统一使用Q24.8,从而统一数据处理方式。字符串不做修改。\

目前仅图表控件使用数组类型数据,文本和输入框控件使用字符串类型数据,其他控件均使用数值类型数据。

二、数据获取

1.多语言

固件需要获取当前系统配置的多语言类型,用于处理配置中的多语言信息。

固件获取多语言类型的接口函数:

uint32_t sfat_get_lang_type(void);

此处有两个需要用户修改的地方:
1:语言类型字符串的获取方式
2;每个语言类型对应的字符串

备注:用户可以使用自己的方式来处理多语言类型,只要返回的枚举类型是工具定义的即可。\

2.数值

固件获取数值的接口函数:

/*
*param: obj 控件指针
*param: id_tab 数值id列表,默认使用第一个
*param: id_num 数值id的数量
*/
int32_t sfat_get_data(lv_obj_t *obj, uint16_t *id_tab, uint8_t id_num);

用户对接数据只需按照如下示例,将数据填入宏Q24_DOUBLE_TO_Q();

case DATA_SYSTEM_STATUS_BATTERY: {
	ret = Q24_DOUBLE_TO_Q(((battery_info_t *)app_db_get_rt_data(RT_BATTERY))->level);
	break;
}

3.数组

待定

4.字符串

待定

三、数据设置

目前仅支持设置数值。

固件获取数值的接口函数:

/*
*param: data_id 数值id
*param: value 数值,Q24.8
*/
int32_t sfat_set_data(uint16_t data_id, uint32_t value);

由于此时传来的value同样是Q24.8格式的数据,所以需要通过Q24_Q_TO_DOUBLE()将其转换为doubel类型的数据后再强转为目标数据的原始类型

case DATA_SYSTEM_STATUS_BATTERY: {
	battery_info_t *info = (battery_info_t *)app_db_get_rt_data(RT_BATTERY);
	info->level = (uint16_t)Q24_Q_TO_DOUBLE(value);
	break;
}

四、数据单位转换

/*
source_value: 被转换的数据
source_unit_id: 被转换的数据的单位
target_unit_id: 目标数据的单位
*/
int32_t sfat_data_conver_unit(int32_t source_value, uint32_t source_unit_id, uint32_t target_unit_id)

当工具中配置了数据单位转换的功能以后,固件会在获取到数据以后实行单位转换的操作。