no-OS
Loading...
Searching...
No Matches
adgm3121.c File Reference

Implementation of ADGM3121 Driver. More...

#include <stdlib.h>
#include "no_os_error.h"
#include "no_os_alloc.h"
#include "no_os_delay.h"
#include "no_os_util.h"
#include "adgm3121.h"
Include dependency graph for adgm3121.c:

Functions

int adgm3121_write_register (struct adgm3121_dev *dev, uint8_t reg_addr, uint8_t data)
 Write to device register via SPI.
 
int adgm3121_read_register (struct adgm3121_dev *dev, uint8_t reg_addr, uint8_t *data)
 Read from device register via SPI.
 
int adgm3121_set_switch_state (struct adgm3121_dev *dev, enum adgm3121_switch sw, enum adgm3121_state state)
 Set the state of a specific switch.
 
int adgm3121_get_switch_state (struct adgm3121_dev *dev, enum adgm3121_switch sw, enum adgm3121_state *state)
 Get the current state of a specific switch.
 
int adgm3121_set_switches (struct adgm3121_dev *dev, uint8_t switch_mask)
 Set multiple switches at once using bitmask.
 
int adgm3121_get_switches (struct adgm3121_dev *dev, uint8_t *switch_mask)
 Get all switch states as bitmask.
 
int adgm3121_reset_switches (struct adgm3121_dev *dev)
 Reset all switches to off state.
 
int adgm3121_enter_daisy_chain_mode (struct adgm3121_dev *dev)
 Enter SPI daisy chain mode.
 
int adgm3121_check_internal_error (struct adgm3121_dev *dev, uint8_t *error_status)
 Check for internal errors.
 
int adgm3121_init (struct adgm3121_dev **device, struct adgm3121_init_param *init_param)
 Initialize the device.
 
int adgm3121_remove (struct adgm3121_dev *dev)
 Free resources allocated by adgm3121_init()
 

Detailed Description

Implementation of ADGM3121 Driver.

Author
Antoniu Miclaus (anton.nosp@m.iu.m.nosp@m.iclau.nosp@m.s@an.nosp@m.alog..nosp@m.com)

Copyright 2025(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Function Documentation

◆ adgm3121_check_internal_error()

int adgm3121_check_internal_error ( struct adgm3121_dev * dev,
uint8_t * error_status )

Check for internal errors.

Parameters
dev- The device structure
error_status- Pointer to store error status (bits 7:6)
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_enter_daisy_chain_mode()

int adgm3121_enter_daisy_chain_mode ( struct adgm3121_dev * dev)

Enter SPI daisy chain mode.

Parameters
dev- The device structure
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_get_switch_state()

int adgm3121_get_switch_state ( struct adgm3121_dev * dev,
enum adgm3121_switch sw,
enum adgm3121_state * state )

Get the current state of a specific switch.

Parameters
dev- The device structure
sw- The switch to read (SW1 to SW4)
state- Pointer to store the current state
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_get_switches()

int adgm3121_get_switches ( struct adgm3121_dev * dev,
uint8_t * switch_mask )

Get all switch states as bitmask.

Parameters
dev- The device structure
switch_mask- Pointer to store switch states bitmask
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_init()

int adgm3121_init ( struct adgm3121_dev ** device,
struct adgm3121_init_param * init_param )

Initialize the device.

Parameters
device- Pointer to the device structure pointer
init_param- Pointer to the initialization parameters
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_read_register()

int adgm3121_read_register ( struct adgm3121_dev * dev,
uint8_t reg_addr,
uint8_t * data )

Read from device register via SPI.

Parameters
dev- The device structure
reg_addr- Register address
data- Pointer to store read data
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_remove()

int adgm3121_remove ( struct adgm3121_dev * dev)

Free resources allocated by adgm3121_init()

Parameters
dev- The device structure
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_reset_switches()

int adgm3121_reset_switches ( struct adgm3121_dev * dev)

Reset all switches to off state.

Parameters
dev- The device structure
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_set_switch_state()

int adgm3121_set_switch_state ( struct adgm3121_dev * dev,
enum adgm3121_switch sw,
enum adgm3121_state state )

Set the state of a specific switch.

Parameters
dev- The device structure
sw- The switch to control (SW1 to SW4)
state- The desired state (ADGM3121_ENABLE or ADGM3121_DISABLE)
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_set_switches()

int adgm3121_set_switches ( struct adgm3121_dev * dev,
uint8_t switch_mask )

Set multiple switches at once using bitmask.

Parameters
dev- The device structure
switch_mask- Bitmask of switches to enable (bits 0-3)
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_write_register()

int adgm3121_write_register ( struct adgm3121_dev * dev,
uint8_t reg_addr,
uint8_t data )

Write to device register via SPI.

Parameters
dev- The device structure
reg_addr- Register address
data- Data to write
Returns
0 in case of success, negative error code otherwise