| /* | |
| ** Copyright (c) 2015-2016 by Silicon Laboratories | |
| ** | |
| ** $Id: demo_common.h 6594 2017-06-30 22:51:35Z mjmourni $ | |
| ** | |
| ** Distributed by: | |
| ** Silicon Laboratories, Inc | |
| ** | |
| ** This file contains proprietary information. | |
| ** No dissemination allowed without prior written permission from | |
| ** Silicon Laboratories, Inc. | |
| ** | |
| ** File Description: | |
| ** Common functions for the various API demo programs. | |
| ** | |
| ** | |
| */ | |
| #ifndef __PROSLIC_DEMO_COMMON_HDR__ | |
| #define __PROSLIC_DEMO_COMMON_HDR__ 1 | |
| #include "proslic.h" | |
| #ifdef TSTIN_SUPPORT | |
| #include "proslic_tstin.h" | |
| #endif | |
| #define DEMO_NUM_IRQS 4 | |
| /*****************************************************************************************************/ | |
| typedef struct | |
| { | |
| uInt8 irq_save[DEMO_NUM_IRQS]; /* Save/restore IRQ settings for various functions */ | |
| BOOLEAN isFRS_enabled; /* Is fast ring start enabled */ | |
| } demo_chan_info_t; | |
| /*****************************************************************************************************/ | |
| /* This data structure is to keep track a string of the same devices in 1 container. If the system | |
| * has 2 different devices - say 3 Si3226x's and 1 Si3217x, you would need 2 instances of this structure - | |
| * 1 to contain the 3 Si3226x's and 1 to contain the Si3217x. | |
| * | |
| * The initialization code at present assumes everything is on the same daisy chain. Efforts are made | |
| * to note where a code change would be needed if this is not true. | |
| */ | |
| typedef struct | |
| { | |
| int deviceType; | |
| int numberOfDevice; | |
| int numberOfChan; | |
| int chanPerDevice; | |
| int channelBaseIndex; | |
| SiVoiceChanType_ptr channels; | |
| SiVoiceChanType_ptr *channelPtrs; | |
| SiVoiceDeviceType_ptr devices; | |
| demo_chan_info_t *demo_info; | |
| #ifdef TSTIN_SUPPORT | |
| proslicTestInObjType_ptr pTstin; | |
| #endif | |
| } demo_port_t; | |
| typedef struct | |
| { | |
| demo_port_t *ports; | |
| demo_port_t *currentPort; | |
| int currentChannel; | |
| int totalChannelCount; | |
| SiVoiceChanType_ptr currentChanPtr; | |
| BOOLEAN is_offhook; | |
| } demo_state_t; | |
| typedef enum | |
| { | |
| DEMO_RING_PRESET, | |
| DEMO_DCFEED_PRESET, | |
| DEMO_IMPEDANCE_PRESET, | |
| DEMO_FSK_PRESET, | |
| DEMO_PM_PRESET, | |
| DEMO_TONEGEN_PRESET, | |
| DEMO_PCM_PRESET, | |
| DEMO_VDAA_COUNTRY_PRESET, | |
| DEMO_VDAA_AUDIO_GAIN_PRESET, | |
| DEMO_VDAA_RING_VALIDATION_PRESET, | |
| DEMO_VDAA_PCM_PRESET, | |
| DEMO_VDAA_HYBRID_PRESET, | |
| } demo_preset_t; | |
| /*****************************************************************************************************/ | |
| void demo_init_port_info(demo_port_t *port, unsigned int port_id); | |
| int demo_alloc(demo_port_t *port, int *base_channel_index, | |
| controlInterfaceType *proslic_api_hwIf); | |
| int demo_init_devices(demo_port_t *port); | |
| int demo_load_presets(demo_port_t *port); | |
| void demo_shutdown(demo_port_t *port); | |
| void demo_free(demo_port_t *port); | |
| int demo_get_preset(demo_preset_t preset_enum); | |
| /* Return back the channel pointer, given a channel number */ | |
| SiVoiceChanType_ptr demo_get_cptr(demo_state_t *demo_state, int channel_number); | |
| void demo_save_slic_irqens(demo_state_t *pState); | |
| void demo_restore_slic_irqens(demo_state_t *pState); | |
| int demo_set_chan_state(demo_port_t *port); | |
| #endif /* __PROSLIC_DEMO_COMMON_HDR__ */ | |