热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ANT+自行车车灯数据页3–子灯灯光状态(0x03)

数据页面3是从ANT自行车灯广播的主要数据页面之一。如果存在子灯,则ANT自行车灯应以数据页循环方式发送此页。有关何时发送或忽略此数据页面的详细信息,请

数据页面3是从ANT+自行车灯广播的主要数据页面之一。如果存在子灯,则ANT+自行车灯应以数据页循环方式发送此页。有关何时发送或忽略此数据页面的详细信息,请参见7.3节。该消息中的所有字段均应按照表7-14中的说明进行设置。

Table 7-14. 数据页3格式–子灯状态
在这里插入图片描述
Table 7-15. 数据公共格式第3页
在这里插入图片描述

7.6.1 子灯索引
字节2:4中的数据描述子光,子光索引在字节2的子光索引字段中指示。
字节5:7中的数据描述具有下一个子灯光索引的子灯光。
例如,如果子灯光3以字节2:4描述,则字节5:7描述子灯光4。
为每个子光提供的数据包括子光配置为的光类型、电池电量、当前状态和光束强度。
此字段不应设置为0、4、5、6或7。
注意,作为一个最佳实践,如果没有子光[a + 1]存在,那么每个字节都应该被设置为0。

7.6.2 更改切换位 ‘A’/’A+1’
更改切换位旨在使主指示灯或控制器能够简单地确定是否在数据页中描述的子指示灯上发生了任何更改。每次以字节2:4(或5:7)发送的数据与描述该子光的最后发送的子光状态数据页相比不同时,应切换该位。

7.6.3 电池提示标志
如果子灯的电池电量低或严重,则通过将标志位设置为1来指示.

/* Copyright (c) 2015 Nordic Semiconductor. All Rights Reserved.** The information contained herein is property of Nordic Semiconductor ASA.* Terms and conditions of usage are described in detail in NORDIC* SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.** Licensees are granted free, non-transferable use of the information. NO* WARRANTY of ANY KIND is provided. This heading must NOT be removed from* the file.**//*************[A_StateBitField]***[A+_StateBitField]************************
0 灯光关闭
1 常亮:81 - 100%亮度
2 常亮:61 - 80%亮度
3 常亮:41 - 60%亮度
4 常亮:21 - 40%亮度
5 常亮: 0 - 20%亮度
6 慢闪烁
7 快速闪烁
8 随机闪烁
9 自动
10 左转信号灯(自动取消)
11 左转信号灯(持续)
12 右转信号灯(自动取消)
13 右转信号灯(持续)
14 危险指示灯(左右指示灯连续闪烁)
15:47 保留以备将来使用。不要使用。
48 自定义模式48
X 自定义模式“X”
63 自定义模式63
**********************************/

#include "ant_BikeLight_page_3.h"
#include "ant_BikeLight_utils.h"
#include "ant_BikeLight_page_logger.h"
#include "SEGGER_RTT.h"
#include "SEGGER_RTT_Conf.h"
#include "main.h"
/**@brief BikeLight 子灯光状态 第3页数据布局结构. */
typedef struct
{uint8_t Light_Index; //灯光索引 0-63/*******************A********************/uint8_t SubLight_Index_A : 3; //子灯`A`索引 [1-3]uint8_t Light_Type_A : 3; //灯光类型 0:前灯 2:尾灯uint8_t : 1;uint8_t ChangeToggleBit_A : 1; //更改“A”数据时,此变量需要反转。uint8_t StateBitField_A; //状态位:见上面注释uint8_t Intensity_A : 7; //灯光亮度: [0,100]% 启用自动亮度模式:0x7E 无效:0x7Fuint8_t Battery_Warning_A : 1; //电池提示 0:没有提示 1--电量低/*******************A**END******************//********************A+1*********************/uint8_t Light_Type_A1 : 3; //灯光类型 0:前灯 2:尾灯uint8_t : 4;uint8_t ChangeToggleBit_A1 : 1; //更改“A+1”数据时,此变量需要反转。uint8_t StateBitField_A1; //状态位:见上面注释uint8_t Intensity_A1 : 7; //灯光亮度: [0,100]% 启用自动亮度模式:0x7E 无效:0x7Fuint8_t Battery_Warning_A1 : 1; //电池提示 0:没有提示 1--电量低/*******************A+1**END******************/
} ant_BikeLight_page3_data_layout_t;static void page3_data_log(ant_BikeLight_page3_data_t const *p_page_data)
{
// SEGGER_RTT_printf(0, "Light_Index: %d\r\n", (uint8_t)p_page_data->Light_Index);}void ant_BikeLight_page_3_encode(uint8_t *p_page_buffer,ant_BikeLight_page3_data_t const *p_page_data)
{ant_BikeLight_page3_data_layout_t *p_outcoming_data = (ant_BikeLight_page3_data_layout_t *)p_page_buffer;p_outcoming_data->Light_Index = p_page_data->Light_Index;p_outcoming_data->SubLight_Index_A = p_page_data->SubLight_Index_A;p_outcoming_data->Light_Type_A = p_page_data->Light_Type_A;p_outcoming_data->ChangeToggleBit_A = p_page_data->ChangeToggleBit_A;p_outcoming_data->StateBitField_A = p_page_data->StateBitField_A;p_outcoming_data->Intensity_A = p_page_data->Intensity_A;p_outcoming_data->Battery_Warning_A = p_page_data->Battery_Warning_A;page3_data_log(p_page_data);
}void ant_BikeLight_page_3_decode(uint8_t const *p_page_buffer,ant_BikeLight_page3_data_t *p_page_data)
{ant_BikeLight_page3_data_layout_t const *p_incoming_data =(ant_BikeLight_page3_data_layout_t *)p_page_buffer;p_page_data->Light_Index = p_incoming_data->Light_Index;p_page_data->SubLight_Index_A = p_incoming_data->SubLight_Index_A;p_page_data->Light_Type_A = p_incoming_data->Light_Type_A;p_page_data->ChangeToggleBit_A = p_incoming_data->ChangeToggleBit_A;p_page_data->StateBitField_A = p_incoming_data->StateBitField_A;p_page_data->Intensity_A = p_incoming_data->Intensity_A;p_page_data->Battery_Warning_A = p_incoming_data->Battery_Warning_A;page3_data_log(p_page_data);
}

/* Copyright (c) 2015 Nordic Semiconductor. All Rights Reserved.** The information contained herein is property of Nordic Semiconductor ASA.* Terms and conditions of usage are described in detail in NORDIC* SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.** Licensees are granted free, non-transferable use of the information. NO* WARRANTY of ANY KIND is provided. This heading must NOT be removed from* the file.**/
#ifndef ANT_BIKELIGHT_PAGE_3_H__
#define ANT_BIKELIGHT_PAGE_3_H__
/*************[A_StateBitField]***[A+_StateBitField]************************
0 灯光关闭
1 常亮:81 - 100%亮度
2 常亮:61 - 80%亮度
3 常亮:41 - 60%亮度
4 常亮:21 - 40%亮度
5 常亮: 0 - 20%亮度
6 慢闪烁
7 快速闪烁
8 随机闪烁
9 自动
10 左转信号灯(自动取消)
11 左转信号灯(持续)
12 右转信号灯(自动取消)
13 右转信号灯(持续)
14 危险指示灯(左右指示灯连续闪烁)
15:47 保留以备将来使用。不要使用。
48 自定义模式48
X 自定义模式“X”
63 自定义模式63
**********************************/

#include typedef struct
{uint8_t Light_Index; //灯光索引 0-63/*******************A********************/uint8_t SubLight_Index_A : 3; //子灯`A`索引 [1-3]uint8_t Light_Type_A : 3; //灯光类型 0:前灯 2:尾灯uint8_t : 1;uint8_t ChangeToggleBit_A : 1; //更改“A”数据时,此变量需要反转。uint8_t StateBitField_A; //状态位:见上面注释uint8_t Intensity_A : 7; //灯光亮度: [0,100]% 启用自动亮度模式:0x7E 无效:0x7Fuint8_t Battery_Warning_A : 1; //电池提示 0:没有提示 1--电量低/*******************A**END******************//********************A+1*********************/uint8_t Light_Type_A1 : 3; //灯光类型 0:前灯 2:尾灯uint8_t : 4;uint8_t ChangeToggleBit_A1 : 1; //更改“A+1”数据时,此变量需要反转。uint8_t StateBitField_A1; //状态位:见上面注释uint8_t Intensity_A1 : 7; //灯光亮度: [0,100]% 启用自动亮度模式:0x7E 无效:0x7Fuint8_t Battery_Warning_A1 : 1; //电池提示 0:没有提示 1--电量低/*******************A+1**END******************/
} ant_BikeLight_page3_data_t;#define DEFAULT_ANT_BikeLight_PAGE3() \(ant_BikeLight_page3_data_t) \{ \.Light_Index = 0, \.SubLight_Index_A = 1, \.Light_Type_A = 0, \.ChangeToggleBit_A = 0, \.StateBitField_A = 0, \.Intensity_A = 100, \.StateBitField_A = 0, \.Battery_Warning_A = 0, \.Light_Type_A1 = 0, \.ChangeToggleBit_A1 = 0, \.StateBitField_A1 = 0, \.Intensity_A1 = 0, \.Battery_Warning_A1 = 0, \}void ant_BikeLight_page_3_encode(uint8_t *p_page_buffer,ant_BikeLight_page3_data_t const *p_page_data);void ant_BikeLight_page_3_decode(uint8_t const *p_page_buffer,ant_BikeLight_page3_data_t *p_page_data);#endif // ANT_BIKELIGHT_PAGE_3_H__
/** @} */

推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
author-avatar
手机用户2502941301
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有