FreeCalypso > hg > fc-tourmaline
view src/cs/services/lls/lls_functions.c @ 267:10b3a6876273
fc-target.h preprocessor symbols: introduce CONFIG_TARGET_LEO_RFFE
Out of our currently existing supported targets, Leonardo and Tango
use TI's classic Leonardo RFFE wiring. However, we would like to
use the same quadband RFFE with the same classic wiring on our
FreeCalypso Libre Dumbphone handset, and also on the planned
development board that will serve as a stepping stone toward that
goal. Therefore, we introduce the new CONFIG_TARGET_LEO_RFFE
preprocessor symbol, and conditionalize on this symbol in tpudrv12.h,
instead of a growing || of different targets.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 09 Jun 2021 07:26:51 +0000 |
parents | 5bf097aeaad7 |
children |
line wrap: on
line source
/** * @file lls_functions.c * * Implementation of LLS functions. * * @author Laurent Sollier (l-sollier@ti.com) * @version 0.1 */ /* * History: * * Date Author Modification * ---------------------------------------- * 03/12/2002 L Sollier Create * * * (C) Copyright 2002 by Texas Instruments Incorporated, All Rights Reserved */ #ifndef _WINDOWS #include "l1sw.cfg" #include "chipset.cfg" #endif #include "lls/lls_i.h" #include "lls/lls_api.h" #include "spi/spi_api.h" #include "rvf/rvf_api.h" /* Number of available equipment's */ #define NUMBER_OF_EQUIPMENT 3 /* Parameters for each EQUIPMENT */ typedef struct { T_LLS_EQUIPMENT equipment_sort; UINT16 page; UINT16 address; UINT8 bit; } T_EQUIPMENT_PARAM; /* Table of parameters for all the equipment's */ typedef T_EQUIPMENT_PARAM T_EQUIPMENT_PARAM_TABLE[NUMBER_OF_EQUIPMENT]; /* Definition of the parameters for the equipment */ #if (ANLG_FAM == 2) static T_EQUIPMENT_PARAM_TABLE equipment_param_table = { {LLS_LED_A, PAGE1, AUXLED, 0}, {LLS_BACKLIGHT, PAGE1, AUXLED, 1}, {LLS_PRECHARGE_LED, PAGE0, BCICTL2, 5} }; #else static T_EQUIPMENT_PARAM_TABLE equipment_param_table = {0}; #endif /* Save of the action to perform */ typedef struct { T_LLS_EQUIPMENT equipment_index; UINT8 action; } T_ACTION; static T_ACTION action_to_perform = {0}; /* Mutex used to protect perform only one action simultaneously */ static T_RVF_MUTEX mutex; /** * @name Functions implementation * */ /*@{*/ /** * function: lls_initialize */ T_RV_RET lls_initialize(void) { T_RV_RET ret = RV_OK; T_LLS_EQUIPMENT equipment_sort; UINT8 i; /* Mutex initialization */ ret = rvf_initialize_mutex(&mutex); if (ret != RVF_OK) return RV_INTERNAL_ERR; /* Initialisation of the equipment at SWITCH_OFF */ for (i = 0; i < NUMBER_OF_EQUIPMENT; i++) { equipment_sort = equipment_param_table[i].equipment_sort; /* FreeCalypso change: don't touch LED-C, leave it to FCHG SWE */ if (equipment_sort != LLS_PRECHARGE_LED) { ret = lls_switch_off(equipment_sort); if (ret != RV_OK) return RV_INTERNAL_ERR; } } return RV_OK; } /** * function: lls_kill_service */ T_RV_RET lls_kill_service(void) { T_RV_RET ret = RV_OK; ret = rvf_delete_mutex(&mutex); if (ret != RVF_OK) return RV_INTERNAL_ERR; return ret; } /** * function: lls_callback_equipment_status */ void lls_callback_equipment_status(UINT16* equipment_status) { T_RV_RET ret = RV_OK; UINT16 new_equipment_status = *equipment_status; LLS_SEND_TRACE_PARAM("LLS: Received equipment status", (UINT32) new_equipment_status, RV_TRACE_LEVEL_DEBUG_LOW); if (action_to_perform.action == SWITCH_ON) new_equipment_status |= 1 << equipment_param_table[action_to_perform.equipment_index].bit; else new_equipment_status &= ~(1 << equipment_param_table[action_to_perform.equipment_index].bit); LLS_SEND_TRACE_PARAM("LLS: New equipment status", (UINT32) new_equipment_status, RV_TRACE_LEVEL_DEBUG_LOW); ret = spi_abb_write(equipment_param_table[action_to_perform.equipment_index].page, equipment_param_table[action_to_perform.equipment_index].address, new_equipment_status); if (ret != RV_OK) LLS_SEND_TRACE("LLS: Error on SPI read", RV_TRACE_LEVEL_ERROR); rvf_unlock_mutex(&mutex); } /** * function: lls_manage_equipment */ T_RV_RET lls_manage_equipment(UINT8 equipment_index, UINT8 action) { T_RV_RET ret = RV_OK; /* Lock mutex until response from SPI is received */ rvf_lock_mutex(&mutex); /* Save action to do */ action_to_perform.equipment_index = equipment_index; action_to_perform.action = action; ret = spi_abb_read(equipment_param_table[equipment_index].page, equipment_param_table[equipment_index].address, lls_callback_equipment_status); if (ret != RV_OK) LLS_SEND_TRACE("LLS: Error on SPI read", RV_TRACE_LEVEL_ERROR); return ret; } /** * function: lls_search_index */ T_RV_RET lls_search_index(T_LLS_EQUIPMENT equipment, UINT8* equipment_index) { T_RV_RET ret = RV_OK; UINT8 i; for (i = 0; i < NUMBER_OF_EQUIPMENT; i++) if (equipment == equipment_param_table[i].equipment_sort) { *equipment_index = i; return RV_OK; } return RV_INVALID_PARAMETER; } /*@}*/