class pah8011 for mbed

pah8011/pah_comm.c

Committer:
bell_huang
Date:
2019-01-23
Revision:
6:d196b612b14a

File content as of revision 6:d196b612b14a:

#include "pah_comm.h"

#include "pah_util.h"


/*============================================================================
STATIC VARIABLE DEFINITIONS
============================================================================*/
static bool _has_drv_comm = false;
static pah_drv_comm_s   _drv_comm;


/*============================================================================
PUBLIC FUNCTION DEFINITIONS
============================================================================*/
void pah_comm_set_drv_comm(const pah_drv_comm_s *drv_comm)
{
    memcpy(&_drv_comm, drv_comm, sizeof(*drv_comm));
    _has_drv_comm = true;
}

bool pah_comm_write(uint8_t addr, uint8_t data)
{
    if (!_has_drv_comm)
        return false;

    if (_drv_comm.type == pah_drv_comm_spi)
        PAH_CLEAR_BIT(addr, 7); //write, bit7 = 0
    
    return PAH_SUCCEEDED(_drv_comm.write(&_drv_comm, addr, data));
}

bool pah_comm_read(uint8_t addr, uint8_t *data)
{
    if (!_has_drv_comm)
        return false;

    if (_drv_comm.type == pah_drv_comm_spi)
        PAH_SET_BIT(addr, 7); //read, bit7 = 1

    return PAH_SUCCEEDED(_drv_comm.read(&_drv_comm, addr, data));
}

bool pah_comm_burst_read(uint8_t addr, uint8_t *data, uint16_t num)
{
    if (!_has_drv_comm)
        return false;

    if (_drv_comm.type == pah_drv_comm_spi)
        PAH_SET_BIT(addr, 7); //read, bit7 = 1

    return PAH_SUCCEEDED(_drv_comm.burst_read(&_drv_comm, addr, data, num));
}

pah_comm_bus_e pah_comm_get_bus_type(void)
{
    if (_drv_comm.type == pah_drv_comm_spi)
        return pah_comm_bus_spi;
    return pah_comm_bus_i2c;
}