Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
ipso-control-template.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016, SICS Swedish ICT AB
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 3. Neither the name of the copyright holder nor the names of its
14
* contributors may be used to endorse or promote products derived
15
* from this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
18
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28
* OF THE POSSIBILITY OF SUCH DAMAGE.
29
*/
30
31
/**
32
* \addtogroup ipso-objects
33
* @{
34
*
35
*/
36
37
/**
38
* \file
39
* Implementation of OMA LWM2M / IPSO sensor template.
40
* \author
41
* Joakim Eriksson <joakime@sics.se>
42
* Niclas Finne <nfi@sics.se>
43
*/
44
45
#ifndef IPSO_CONTROL_TEMPLATE_H_
46
#define IPSO_CONTROL_TEMPLATE_H_
47
48
#include "
lwm2m-engine.h
"
49
50
typedef
struct
ipso_control ipso_control_t;
51
52
#define IPSO_CONTROL_USE_DIMMER 0x01
53
54
typedef
lwm2m_status_t (*ipso_control_set_value_t)(ipso_control_t *control,
55
uint8_t v);
56
57
/* Values of the IPSO control object */
58
struct
ipso_control {
59
lwm2m_object_instance_t reg_object;
60
uint8_t flags;
61
uint8_t value;
/* used to emulate on/off and dim-value */
62
uint32_t on_time;
/* on-time in seconds */
63
uint64_t last_on_time;
64
ipso_control_set_value_t set_value;
65
};
66
67
#define IPSO_CONTROL(name, oid, iid, setv) \
68
static ipso_control_t name = { \
69
.reg_object.object_id = oid, \
70
.reg_object.instance_id = iid, \
71
.set_value = setv \
72
}
73
74
int
ipso_control_add(ipso_control_t *control);
75
int
ipso_control_remove(ipso_control_t *control);
76
77
static
inline
uint16_t
78
ipso_control_get_object_id(
const
ipso_control_t *control)
79
{
80
return
control->reg_object.object_id;
81
}
82
83
static
inline
uint16_t
84
ipso_control_get_instance_id(
const
ipso_control_t *control)
85
{
86
return
control->reg_object.instance_id;
87
}
88
89
static
inline
uint8_t
90
ipso_control_is_on(
const
ipso_control_t *control)
91
{
92
return
(control->value & 0x80) != 0;
93
}
94
95
static
inline
uint8_t
96
ipso_control_get_value(
const
ipso_control_t *control)
97
{
98
return
(control->value & 0x80) != 0 ? (control->value & 0x7f) : 0;
99
}
100
101
lwm2m_status_t ipso_control_set_on(ipso_control_t *control, uint8_t onoroff);
102
103
lwm2m_status_t ipso_control_set_value(ipso_control_t *control, uint8_t dimm_value);
104
105
#endif
/* IPSO_CONTROL_TEMPLATE_H_ */
106
/** @} */
lwm2m-engine.h
Header file for the Contiki OMA LWM2M engine.
os
services
ipso-objects
ipso-control-template.h
Generated on
for Contiki-NG by
1.17.0