SimpleLink MCU SDK Driver APIs  tidrivers_msp43x_3_01_01_03
I2CSlave.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2016, Texas Instruments Incorporated
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  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
118 #ifndef ti_drivers_I2CSLAVE__include
119 #define ti_drivers_I2CSLAVE__include
120 
121 #ifdef __cplusplus
122 extern "C" {
123 #endif
124 
125 #include <stdint.h>
126 #include <stdbool.h>
127 #include <stddef.h>
128 
145 #define I2CSLAVE_CMD_RESERVED (32)
146 
159 #define I2CSLAVE_STATUS_RESERVED (-32)
160 
173 #define I2CSLAVE_STATUS_SUCCESS (0)
174 
181 #define I2CSLAVE_STATUS_ERROR (-1)
182 
190 #define I2CSLAVE_STATUS_UNDEFINEDCMD (-2)
191 
201 /* Add I2CSLAVE_CMD_<commands> here */
202 
211 
218 typedef enum I2CSlave_Mode_ {
224 } I2CSlave_Mode;
225 
238 
250 typedef void (*I2CSlave_CallbackFxn)(I2CSlave_Handle handle, bool status);
251 
271 typedef struct I2CSlave_Params_ {
277  void *custom;
279 
284 typedef void (*I2CSlave_CloseFxn) (I2CSlave_Handle handle);
285 
290 typedef int_fast16_t (*I2CSlave_ControlFxn) (I2CSlave_Handle handle,
291  uint_fast16_t cmd,
292  void *arg);
293 
298 typedef void (*I2CSlave_InitFxn) (I2CSlave_Handle handle);
299 
304 typedef I2CSlave_Handle (*I2CSlave_OpenFxn) (I2CSlave_Handle handle,
305  I2CSlave_Params *params);
306 
311 typedef bool (*I2CSlave_WriteFxn) (I2CSlave_Handle handle,
312  const void *buffer, size_t size);
313 
314 
319 typedef bool (*I2CSlave_ReadFxn) (I2CSlave_Handle handle, void *buffer,
320  size_t size);
321 
322 
328 typedef struct I2CSlave_FxnTable_ {
331 
334 
337 
340 
343 
347 
359 typedef struct I2CSlave_Config_ {
362 
364  void *object;
365 
367  void const *hwAttrs;
369 
370 
380 extern void I2CSlave_close(I2CSlave_Handle handle);
381 
420 extern int_fast16_t I2CSlave_control(I2CSlave_Handle handle, uint_fast16_t cmd,
421  void *arg);
422 
431 extern void I2CSlave_init(void);
432 
453 extern I2CSlave_Handle I2CSlave_open(uint_least8_t index,
454  I2CSlave_Params *params);
455 
466 extern void I2CSlave_Params_init(I2CSlave_Params *params);
467 
500 extern bool I2CSlave_read(I2CSlave_Handle handle, void *buffer,
501  size_t size);
537 extern bool I2CSlave_write(I2CSlave_Handle handle, const void *buffer,
538  size_t size);
539 
540 #ifdef __cplusplus
541 }
542 #endif
543 
544 #endif /* ti_drivers_I2CSLAVE__include */
Definition: I2CSlave.h:222
struct I2CSlave_Config_ * I2CSlave_Handle
A handle that is returned from a I2CSlave_open() call.
Definition: I2CSlave.h:210
struct I2CSlave_Config_ I2CSlave_Config
I2CSlave Global configuration.
enum I2CSlave_Mode_ I2CSlave_Mode
I2CSlave mode.
struct I2CSlave_Params_ I2CSlave_Params
I2CSlave Parameters.
I2CSlave_ReadFxn readFxn
Definition: I2CSlave.h:342
void * object
Definition: I2CSlave.h:364
void I2CSlave_close(I2CSlave_Handle handle)
Function to close a I2CSlave peripheral specified by the I2CSlave handle.
I2CSlave_CallbackFxn transferCallbackFxn
Definition: I2CSlave.h:275
bool I2CSlave_write(I2CSlave_Handle handle, const void *buffer, size_t size)
Function that handles the I2CSlave write for SYS/BIOS.
I2CSlave Global configuration.
Definition: I2CSlave.h:359
I2CSlave Parameters.
Definition: I2CSlave.h:271
Definition: I2CSlave.h:234
void(* I2CSlave_CloseFxn)(I2CSlave_Handle handle)
A function pointer to a driver specific implementation of I2CSlave_close().
Definition: I2CSlave.h:284
I2CSlave_Handle(* I2CSlave_OpenFxn)(I2CSlave_Handle handle, I2CSlave_Params *params)
A function pointer to a driver specific implementation of I2CSlave_open().
Definition: I2CSlave.h:304
Definition: I2CSlave.h:219
I2CSlave_InitFxn initFxn
Definition: I2CSlave.h:336
I2CSlave_ControlFxn controlFxn
Definition: I2CSlave.h:333
I2CSlave_CloseFxn closeFxn
Definition: I2CSlave.h:330
struct I2CSlave_FxnTable_ I2CSlave_FxnTable
The definition of a I2CSlave function table that contains the required set of functions to control a ...
I2CSlave_TransferMode_
I2CSlave transfer mode.
Definition: I2CSlave.h:233
Definition: I2CSlave.h:235
Definition: I2CSlave.h:223
void const * hwAttrs
Definition: I2CSlave.h:367
int_fast16_t I2CSlave_control(I2CSlave_Handle handle, uint_fast16_t cmd, void *arg)
Function performs implementation specific features on a given I2CSlave_Handle.
Definition: I2CSlave.h:220
bool I2CSlave_read(I2CSlave_Handle handle, void *buffer, size_t size)
Function that handles the I2CSlave read for SYS/BIOS.
I2CSlave_OpenFxn openFxn
Definition: I2CSlave.h:339
I2CSlave_WriteFxn writeFxn
Definition: I2CSlave.h:345
bool(* I2CSlave_ReadFxn)(I2CSlave_Handle handle, void *buffer, size_t size)
A function pointer to a driver specific implementation of I2CSlave_ReadFxn().
Definition: I2CSlave.h:319
void * custom
Definition: I2CSlave.h:277
void(* I2CSlave_CallbackFxn)(I2CSlave_Handle handle, bool status)
I2CSlave callback function.
Definition: I2CSlave.h:250
bool(* I2CSlave_WriteFxn)(I2CSlave_Handle handle, const void *buffer, size_t size)
A function pointer to a driver specific implementation of I2CSlave_WriteTransaction().
Definition: I2CSlave.h:311
enum I2CSlave_TransferMode_ I2CSlave_TransferMode
I2CSlave transfer mode.
I2CSlave_TransferMode transferMode
Definition: I2CSlave.h:273
int_fast16_t(* I2CSlave_ControlFxn)(I2CSlave_Handle handle, uint_fast16_t cmd, void *arg)
A function pointer to a driver specific implementation of I2CSlave_control().
Definition: I2CSlave.h:290
Definition: I2CSlave.h:221
I2CSlave_FxnTable const * fxnTablePtr
Definition: I2CSlave.h:361
I2CSlave_Mode_
I2CSlave mode.
Definition: I2CSlave.h:218
void I2CSlave_Params_init(I2CSlave_Params *params)
Function to initialize the I2CSlave_Params struct to its defaults.
The definition of a I2CSlave function table that contains the required set of functions to control a ...
Definition: I2CSlave.h:328
void I2CSlave_init(void)
Function to initializes the I2CSlave module.
I2CSlave_Handle I2CSlave_open(uint_least8_t index, I2CSlave_Params *params)
Function to initialize a given I2CSlave peripheral specified by the particular index value...
void(* I2CSlave_InitFxn)(I2CSlave_Handle handle)
A function pointer to a driver specific implementation of I2CSlave_init().
Definition: I2CSlave.h:298
Copyright 2016, Texas Instruments Incorporated