0
点赞
收藏
分享

微信扫一扫

ANT+ 自行车车灯 数据页5–模式说明(0x05)


ANT+控制器可以请求此页面(如第5.3节中所述)以获取有关ANT+自行车灯或其任何子灯支持的自定义模式的信息。当ANT+控制器请求时,数据页5从ANT+自行车灯广播。任何支持自定义模式的ANT+自行车灯都应支持此页面。该消息中的所有字段均应按照表7-18中的说明进行设置。

ANT+ 自行车车灯  数据页5–模式说明(0x05)_光亮度

ANT+ 自行车车灯  数据页5–模式说明(0x05)_ant_02

7.8.1 模式编号
在灯光状态和命令页面中使用模式编号来引用此数据页面中描述的灯光设置

7.8.2 模式

模式字段指示适用于此模式的灯光变化的类型,并且如下表所述填充。

ANT+ 自行车车灯  数据页5–模式说明(0x05)_#include_03

定义的图案由一系列重复的图案段(字节5:7)描述,每个图案段代表一个灯光级别。

7.8.3 段时间
段时间字段指示每个定义的模式段持续的毫秒数。所有定义的模式段持续相同的时间长度。当模式字段设置为 定义”时,该值应设置为有效值。
例如,如果段时间为50ms,并且有七个定义的模式段,则每个模式重复将持续350ms。

7.8.4 模式持续时间
模式持续时间字段指示默认情况下ANT+自行车灯将保持在指定模式下的秒数。一但ANT+自行车灯在此模式下保持指定的时间长度,它将自动切换到新模式。新模式将是灯光的默认,如果没有默认存在先前的模式。
如果ANT+自行车灯在模式持续时间到期之前收到命令更改其模式,则该灯应正常切换模式,并且模式持续时间字段不起作用。

7.8.5 颜色

颜色字段用于指定此模式下光束的颜色。在整个模式期间,灯光的颜色应保持恒定。

7.8.6 模式段’X’

模式段字段指示模式中每个时间段的灯光亮度级别。每个模式段持续相同的时间段。强度等级如下表所示进行设置。

表 7-21. 模式段值映射

ANT+ 自行车车灯  数据页5–模式说明(0x05)_光亮度_04

请注意,该图案可以由最多不超过12个的可变数量的图案段定义。较短的图案应将0(关闭)用于其余未使用的图案段。

7.8.6.1 模式段的用法示例
考虑将模式“闪烁,闪烁,暂停” 作为使用模式段字段描述重复模式的示例。
首先,应建立所需的灯光亮度。对于这个例子;假设所需的光强度为“50%闪烁,100%闪烁,关闭”接着,将所期望的图案需要检查,并在必要时改变,以确保最终的亮度将不会被“关闭”。
在此示例中,应将“50%闪烁,100%闪烁,关闭”更改为“关闭,50%闪烁,100%闪烁”,以确保最终灯光亮度不为 “关闭”。(最终灯光亮度不能关闭,因为这与较短的“50%闪烁,100%闪烁” 模式是无法区分的)最后应考虑各灯光亮度的相对亮度。在这个例子中,假设100%闪烁持续时间应该是50闪烁的两倍。
描述该模式所需的模式段序列可以建立为::
OO OM OHH
i.e. 00 02 03 30 00 00 => byte 5: 0x80; byte 6: 0x3c; byte 7: 0x00

/* 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.
*
*/

#include "ant_BikeLight_page_5.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 自定义模式说明 第5页数据布局结构. */
typedef struct
{
uint8_t Data_Page_Number; //数据页码 5
uint8_t Light_Index; //灯光索引 0-63

uint8_t Mode_Number : 6; //指示此页剩余部分中的数据所描述的模式。范围:[0-11] 设置的值为--模式段[0,11]
uint8_t Pattern : 2; //模式: 0--光亮度保存常亮并处于最高亮度 1--光亮度以随机模式变化 2--光亮度根据自定义变化 3--保留

uint8_t Segment_Time; //每个模式段的长度。单位:10ms 范围:[0,2500] 0x00:无效。

uint8_t Mode_Duration : 5; //默认情况下,ANT+自行车灯将保持在此模式的时间。特殊值:0x00–连续
uint8_t Colour : 3; //颜色:0--默认 1--白色 2--黄色/琥珀色 3--红色 [4,6]--保留 7--无效/其他

uint8_t Pattern_Segment_0 : 2; //模式段0 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_1 : 2; //模式段1 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_2 : 2; //模式段2 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_3 : 2; //模式段3 : 0--关闭 1--低档 2--中档 3--高档

uint8_t Pattern_Segment_4 : 2; //模式段4 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_5 : 2; //模式段5 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_6 : 2; //模式段6 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_7 : 2; //模式段7 : 0--关闭 1--低档 2--中档 3--高档

uint8_t Pattern_Segment_8 : 2; //模式段8 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_9 : 2; //模式段9 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_10: 2; //模式段10: 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_11: 2; //模式段11: 0--关闭 1--低档 2--中档 3--高档
} ant_BikeLight_page5_data_layout_t;


static void page5_data_log(ant_BikeLight_page5_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_5_encode(uint8_t *p_page_buffer,
ant_BikeLight_page5_data_t const *p_page_data)
{
ant_BikeLight_page5_data_layout_t *p_outcoming_data = (ant_BikeLight_page5_data_layout_t *)p_page_buffer;

p_outcoming_data->Light_Index = p_page_data->Light_Index;

page5_data_log(p_page_data);
}


void ant_BikeLight_page_5_decode(uint8_t const *p_page_buffer,
ant_BikeLight_page5_data_t *p_page_data)
{
ant_BikeLight_page5_data_layout_t const *p_incoming_data =
(ant_BikeLight_page5_data_layout_t *)p_page_buffer;

p_page_data->Light_Index = p_incoming_data->Light_Index;

page5_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_5_H__
#define ANT_BIKELIGHT_PAGE_5_H__

#include <stdint.h>

typedef struct
{
uint8_t Light_Index; //灯光索引 0-63

uint8_t Mode_Number : 6; //指示此页剩余部分中的数据所描述的模式。范围:[0-11] 设置的值为--模式段[0,11]
uint8_t Pattern : 2; //模式: 0--光亮度保存常亮并处于最高亮度 1--光亮度以随机模式变化 2--光亮度根据自定义变化 3--保留

uint8_t Segment_Time; //每个模式段的长度。单位:10ms 范围:[0,2500] 0x00:无效。

uint8_t Mode_Duration : 5; //默认情况下,ANT+自行车灯将保持在此模式的时间。特殊值:0x00–连续
uint8_t Colour : 3; //颜色:0--默认 1--白色 2--黄色/琥珀色 3--红色 [4,6]--保留 7--无效/其他

uint8_t Pattern_Segment_0 : 2; //模式段0 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_1 : 2; //模式段1 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_2 : 2; //模式段2 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_3 : 2; //模式段3 : 0--关闭 1--低档 2--中档 3--高档

uint8_t Pattern_Segment_4 : 2; //模式段4 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_5 : 2; //模式段5 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_6 : 2; //模式段6 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_7 : 2; //模式段7 : 0--关闭 1--低档 2--中档 3--高档

uint8_t Pattern_Segment_8 : 2; //模式段8 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_9 : 2; //模式段9 : 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_10: 2; //模式段10: 0--关闭 1--低档 2--中档 3--高档
uint8_t Pattern_Segment_11: 2; //模式段11: 0--关闭 1--低档 2--中档 3--高档

} ant_BikeLight_page5_data_t;


#define DEFAULT_ANT_BikeLight_PAGE5() \
(ant_BikeLight_page5_data_t) \
{ \
.Light_Index = 0, \
.Mode_Number = 0, \
.Pattern = 0, \
.Segment_Time = 0, \
.Mode_Duration = 0, \
.Colour = 0, \
.Pattern_Segment_0 = 0, \
.Pattern_Segment_1 = 0, \
.Pattern_Segment_2 = 0, \
.Pattern_Segment_3 = 0, \
.Pattern_Segment_4 = 0, \
.Pattern_Segment_5 = 0, \
.Pattern_Segment_6 = 0, \
.Pattern_Segment_7 = 0, \
.Pattern_Segment_8 = 0, \
.Pattern_Segment_9 = 0, \
.Pattern_Segment_10 = 0, \
.Pattern_Segment_11 = 0, \
}


void ant_BikeLight_page_5_encode(uint8_t *p_page_buffer,
ant_BikeLight_page5_data_t const *p_page_data);


void ant_BikeLight_page_5_decode(uint8_t const *p_page_buffer,
ant_BikeLight_page5_data_t *p_page_data);

#endif // ANT_BIKELIGHT_PAGE_5_H__
/** @} */


举报

相关推荐

0 条评论