Bluenet  5.7.0
Bluenet, firmware for nRF52 smart home devices
Loading...
Searching...
No Matches
cs_AssetFilterPackets.h
Go to the documentation of this file.
1/*
2 * Author: Crownstone Team
3 * Copyright: Crownstone (https://crownstone.rocks)
4 * Date: Mar 2, 2021
5 * License: LGPLv3+, Apache License 2.0, and/or MIT (triple-licensed)
6 */
7
8#pragma once
10
11#include <cstdint>
12#include <cstring>
13
14// ------------------ Command protocol version ------------------
17
18// ------------------ Command values -----------------
19
20struct __attribute__((__packed__)) asset_filter_cmd_upload_filter_t {
22 uint8_t filterId;
24 uint16_t totalSize;
25 uint16_t chunkSize;
26 uint8_t chunk[]; // flexible array, sizeof packet depends on chunkSize.
27};
28
29struct __attribute__((__packed__)) asset_filter_cmd_remove_filter_t {
31 uint8_t filterId;
32};
33
34struct __attribute__((__packed__)) asset_filter_cmd_commit_filter_changes_t {
36 uint16_t masterVersion;
37 uint32_t masterCrc;
38};
39
40// ------------------ Return values ------------------
41
42struct __attribute__((__packed__)) asset_filter_summary_t {
43 uint8_t id;
44 uint32_t crc;
45};
46
47struct __attribute__((__packed__)) asset_filter_cmd_get_filter_summaries_ret_t {
49 uint16_t masterVersion;
50 uint32_t masterCrc;
51 uint16_t freeSpace;
53};
54
55// ------------------ Filter format ------------------
56
57enum class AssetFilterType : uint8_t {
58 CuckooFilter = 0,
60};
61
62enum class AssetFilterInputType : uint8_t {
63 MacAddress = 0,
64 AdDataType = 1,
66};
67
68enum class AssetFilterOutputFormat : uint8_t {
69 Mac = 0,
70 AssetId = 1,
71 None = 2,
72#if BUILD_CLOSEST_CROWNSTONE_TRACKER == 1
73 AssetIdNearest = 100,
74#endif
75};
76
77union __attribute__((__packed__)) asset_filter_flags_t {
78 struct __attribute__((packed)) {
79 bool exclude : 1;
80 } flags;
81 uint8_t asInt = 0;
82};
83
84struct __attribute__((__packed__)) ad_data_type_selector_t {
85 uint8_t adDataType;
86};
87
88struct __attribute__((__packed__)) masked_ad_data_type_selector_t {
89 uint8_t adDataType;
90 uint32_t adDataMask;
91};
92
93struct __attribute__((__packed__)) asset_id_t {
94 uint8_t data[3];
95
96 // default implementation according to C++20
97 bool operator==(const asset_id_t& other) const { return std::memcmp(data, other.data, sizeof(data)) == 0; }
98};
99
100constexpr asset_id_t INVALID_ASSET_ID{.data{0xff, 0xff, 0xff}};
101
102struct __attribute__((__packed__)) asset_filters_version_t {
103 uint16_t masterVersion = 0;
104 uint32_t masterCrc;
105};
Author: Crownstone Team Copyright: Crownstone (https://crownstone.rocks) Date: 02 Apr....
Definition: cs_CuckooFilter.h:69
Definition: cs_ExactMatchFilter.h:12
constexpr asset_id_t INVALID_ASSET_ID
Definition: cs_AssetFilterPackets.h:100
AssetFilterOutputFormat
Definition: cs_AssetFilterPackets.h:68
constexpr asset_filter_cmd_protocol_t ASSET_FILTER_CMD_PROTOCOL_VERSION
Definition: cs_AssetFilterPackets.h:16
AssetFilterType
Definition: cs_AssetFilterPackets.h:57
AssetFilterInputType
Definition: cs_AssetFilterPackets.h:62
uint8_t asset_filter_cmd_protocol_t
Definition: cs_AssetFilterPackets.h:15
Definition: cs_AssetFilterPackets.h:84
uint8_t adDataType
Definition: cs_AssetFilterPackets.h:85
Definition: cs_AssetFilterPackets.h:34
uint16_t masterVersion
Definition: cs_AssetFilterPackets.h:36
uint32_t masterCrc
Definition: cs_AssetFilterPackets.h:37
asset_filter_cmd_protocol_t protocolVersion
Definition: cs_AssetFilterPackets.h:35
Definition: cs_AssetFilterPackets.h:47
uint16_t masterVersion
Definition: cs_AssetFilterPackets.h:49
uint16_t freeSpace
Definition: cs_AssetFilterPackets.h:51
uint32_t masterCrc
Definition: cs_AssetFilterPackets.h:50
asset_filter_cmd_protocol_t protocolVersion
Definition: cs_AssetFilterPackets.h:48
Definition: cs_AssetFilterPackets.h:29
uint8_t filterId
Definition: cs_AssetFilterPackets.h:31
asset_filter_cmd_protocol_t protocolVersion
Definition: cs_AssetFilterPackets.h:30
Definition: cs_AssetFilterPackets.h:20
asset_filter_cmd_protocol_t protocolVersion
Definition: cs_AssetFilterPackets.h:21
uint16_t chunkSize
Definition: cs_AssetFilterPackets.h:25
uint8_t filterId
Definition: cs_AssetFilterPackets.h:22
uint16_t totalSize
Definition: cs_AssetFilterPackets.h:24
uint16_t chunkStartIndex
Definition: cs_AssetFilterPackets.h:23
Definition: cs_AssetFilterPackets.h:42
uint32_t crc
Definition: cs_AssetFilterPackets.h:44
uint8_t id
Definition: cs_AssetFilterPackets.h:43
Definition: cs_AssetFilterPackets.h:102
uint32_t masterCrc
Definition: cs_AssetFilterPackets.h:104
Definition: cs_AssetFilterPackets.h:93
bool operator==(const asset_id_t &other) const
Definition: cs_AssetFilterPackets.h:97
uint8_t data[3]
Definition: cs_AssetFilterPackets.h:94
Definition: cs_AssetFilterPackets.h:88
uint32_t adDataMask
Definition: cs_AssetFilterPackets.h:90
uint8_t adDataType
Definition: cs_AssetFilterPackets.h:89
Definition: cs_AssetFilterPackets.h:77
bool exclude
Definition: cs_AssetFilterPackets.h:79