c1wireswitch 2.1.0.0
c1wireswitch.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef C1WIRESWITCH_H
29#define C1WIRESWITCH_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_one_wire.h"
52
73#define C1WIRESWITCH_CMD_WRITE_SCRATCHPAD 0x5A
74#define C1WIRESWITCH_CMD_READ_SCRATCHPAD 0xF5
75
76#define C1WIRESWITCH_CMD_WRITE_PIO 0x5A
77#define C1WIRESWITCH_CMD_READ_PIO 0xF5
78
83#define C1WIRESWITCH_PIOB_STATE_MASK 0x04
84#define C1WIRESWITCH_PIOA_STATE_MASK 0x01
85#define C1WIRESWITCH_PIOB_LATCH_STATE_MASK 0x08
86#define C1WIRESWITCH_PIOA_LATCH_STATE_MASK 0x02
87
92#define C1WIRESWITCH_PIOA_HIGH 0x01
93#define C1WIRESWITCH_PIOA_LOW 0x00
94#define C1WIRESWITCH_PIOB_HIGH 0x04
95#define C1WIRESWITCH_PIOB_LOW 0x00
96
97#define C1WIRESWITCH_PIOB_ON 0x02
98#define C1WIRESWITCH_PIOB_OFF 0x00
99#define C1WIRESWITCH_PIOA_ON 0x00
100#define C1WIRESWITCH_PIOA_OFF 0x01
101
102#define C1WIRESWITCH_PIOB_LATCH_LOW 0x00
103#define C1WIRESWITCH_PIOB_LATCH_HIGH 0x08
104#define C1WIRESWITCH_PIOA_LATCH_LOW 0x00
105#define C1WIRESWITCH_PIOA_LATCH_HIGH 0x02
106
107 // c1wireswitch_cmd
108
123#define C1WIRESWITCH_FAMILY_CODE 0x3A
124
129#define C1WIRESWITCH_ADDRESS 0x33
130#define C1WIRESWITCH_ADDRESS_ALL 0xFF
131
132 // c1wireswitch_set
133
148#define C1WIRESWITCH_MAP_MIKROBUS( cfg, mikrobus ) \
149 cfg.gp0 = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
150 cfg.gp1 = MIKROBUS( mikrobus, MIKROBUS_AN );
151
152 // c1wireswitch_map
153 // c1wireswitch
154
165
170typedef struct
171{
172 // Modules
173 one_wire_t ow;
175 one_wire_rom_address_t rom_addr;
176 uint8_t address;
179
184typedef struct
185{
186 // Communication gpio pins
187 pin_name_t gp0;
188 pin_name_t gp1;
193
204
221
237
252
266
279
292
305err_t c1wireswitch_read_scratchpad ( c1wireswitch_t *ctx, uint8_t *scratchpad, uint8_t scratchpad_len );
306
319err_t c1wireswitch_write_scratchpad ( c1wireswitch_t *ctx, uint8_t *scratchpad, uint8_t scratchpad_len );
320
332err_t c1wireswitch_write_pio ( c1wireswitch_t *ctx, uint8_t state );
333
345err_t c1wireswitch_read_pio ( c1wireswitch_t *ctx, uint8_t *state );
346
359err_t c1wireswitch_set_pio_state ( c1wireswitch_t *ctx, uint8_t pio_a, uint8_t pio_b );
360
373err_t c1wireswitch_get_pio_state ( c1wireswitch_t *ctx, uint8_t *pio_a, uint8_t *pio_b );
374
387err_t c1wireswitch_get_pio_latch_state ( c1wireswitch_t *ctx, uint8_t *pio_a_latch, uint8_t *pio_b_latch );
388
389#ifdef __cplusplus
390}
391#endif
392#endif // C1WIRESWITCH_H
393
394 // c1wireswitch
395
396// ------------------------------------------------------------------------ END
c1wireswitch_return_value_t
1-Wire Switch Click return value data.
Definition c1wireswitch.h:199
@ C1WIRESWITCH_OK
Definition c1wireswitch.h:200
@ C1WIRESWITCH_ERROR
Definition c1wireswitch.h:201
c1wireswitch_gpio_sel_t
1-Wire Switch Click gpio selector.
Definition c1wireswitch.h:160
@ C1WIRESWITCH_GPIO_0
Definition c1wireswitch.h:161
@ C1WIRESWITCH_GPIO_1
Definition c1wireswitch.h:162
err_t c1wireswitch_set_pio_state(c1wireswitch_t *ctx, uint8_t pio_a, uint8_t pio_b)
1-Wire Switch write specific programmable I/O state function.
void c1wireswitch_gpio_selection(c1wireswitch_cfg_t *cfg, c1wireswitch_gpio_sel_t gpio_sel)
1-Wire Switch driver interface setup function.
err_t c1wireswitch_check_communication(c1wireswitch_t *ctx)
1-Wire Switch check communication function.
err_t c1wireswitch_read_scratchpad(c1wireswitch_t *ctx, uint8_t *scratchpad, uint8_t scratchpad_len)
1-Wire Switch read scratchpad function.
err_t c1wireswitch_init(c1wireswitch_t *ctx, c1wireswitch_cfg_t *cfg)
1-Wire Switch initialization function.
err_t c1wireswitch_get_pio_state(c1wireswitch_t *ctx, uint8_t *pio_a, uint8_t *pio_b)
1-Wire Switch read specific programmable I/O state function.
err_t c1wireswitch_default_cfg(c1wireswitch_t *ctx)
1-Wire Switch default configuration function.
err_t c1wireswitch_write_scratchpad(c1wireswitch_t *ctx, uint8_t *scratchpad, uint8_t scratchpad_len)
1-Wire Switch write scratchpad function.
err_t c1wireswitch_write_pio(c1wireswitch_t *ctx, uint8_t state)
1-Wire Switch write programmable I/O state function.
err_t c1wireswitch_select_device(c1wireswitch_t *ctx)
1-Wire Switch select device function.
void c1wireswitch_cfg_setup(c1wireswitch_cfg_t *cfg)
1-Wire Switch configuration object setup function.
err_t c1wireswitch_read_pio(c1wireswitch_t *ctx, uint8_t *state)
1-Wire Switch read programmable I/O state function.
err_t c1wireswitch_get_pio_latch_state(c1wireswitch_t *ctx, uint8_t *pio_a_latch, uint8_t *pio_b_latch)
1-Wire Switch read programmable I/O latch state function.
1-Wire Switch Click configuration object.
Definition c1wireswitch.h:185
pin_name_t gp0
Definition c1wireswitch.h:187
c1wireswitch_gpio_sel_t gpio_sel
Definition c1wireswitch.h:190
pin_name_t gp1
Definition c1wireswitch.h:188
1-Wire Switch Click context object.
Definition c1wireswitch.h:171
one_wire_rom_address_t rom_addr
Definition c1wireswitch.h:175
uint8_t address
Definition c1wireswitch.h:176
one_wire_t ow
Definition c1wireswitch.h:173