📄 slic.h
字号:
#ifndef __SLIC_H__#define __SLIC_H__#include "spi.h"/* * if STATE_ROLL is set to NON-ZERO value, the * "Call model" will involved in the runtime image * otherwise, directly connected when pick up the * phone */enum FXS_EVENT{ DTMF_DIGIT1 = 1, DTMF_DIGIT2 , DTMF_DIGIT3 , DTMF_DIGIT4 , DTMF_DIGIT5 , DTMF_DIGIT6 , DTMF_DIGIT7 , DTMF_DIGIT8 , DTMF_DIGIT9 , DTMF_DIGIT0 , DTMF_DIGITSTART , DTMF_DIGITHASH , FXS_ONHOOK , FXS_LEFT_ARROW , FXS_RIGHT_ARROW , FXS_CANCEL , FXS_OK , FXS_OFFHOOK ,};enum LINEFEEDSTATE{ OPEN, FORWARD_ACTIVE, FORWARD_ONHOOK_TRANSMISSION, TIP_OPEN, RINGING, REVERSE_ACTIVE, REVERSE_ONHOOK_TRANSMISSION, RING_OPEN};enum TelephoneSTATE{ DEMURE, RING, OFFHOOK, BUSYTONE, RINGTONE, TALKING, ONHOOK};typedef struct { unsigned char address; char *name; unsigned short initial;} indirectRegister;typedef struct PROSLIC_s{ char version; char type; int digit_count; char DTMF_digits[20]; unsigned long interrupt; unsigned char eventEnable; unsigned char hook_status; unsigned long On_Hook_time; unsigned long Off_Hook_time; struct{ enum { TYPE1, TYPE2, TYPE3 } ringType; int nextCadenceEntryIndex; } ringCadenceCordinates; unsigned char ringCount; int qLog[6]; unsigned long eventNumber; uint32 bEnabled:1; uint32 bOffHook:1;#ifdef STATE_ROLL enum TelephoneSTATE nowState; enum TelephoneSTATE preState; uint32 pcm_channel;/*must be filled in init*/ uint32 mid;/*must be filled in init*/#endif} PROSLIC_t;extern PROSLIC_t* slic_data;extern rtl8651_spi_dev_t* spiDev;extern int32 current_channel;#define SLIC_ENTER_STATE(state) \ do { \ slic_data[channel].preState = slic_data[channel].nowState; \ slic_data[channel].nowState = state; \ } while (0)#define ENTER_STATE(state) \ do { \ chipData[channel].preState = chipData[channel].nowState; \ chipData[channel].nowState = state; \ } while (0)typedef struct { unsigned short coeff; unsigned short x; unsigned short y; unsigned char on_hi_byte; unsigned char on_low_byte; unsigned char off_hi_byte; unsigned char off_low_byte;} Oscillator;typedef struct { Oscillator osc1; Oscillator osc2;} tone_struct;typedef struct { char * phoneNumber ; char * functionName; void (*action)(void);}tNUMBER;/*@ ZONE: register read/write*/uint8 _slic_read_DirectReg(uint32 reg, int channel);void _slic_write_DirectReg(uint32 reg, uint8 data, int channel);uint16 _slic_read_IndirectReg(uint32 reg, int channel);void _slic_write_IndirectReg(uint32 reg, uint16 data, int channel);#define writeDirectReg _slic_write_DirectReg#define readDirectReg _slic_read_DirectReg#define writeIndirectReg _slic_write_IndirectReg#define readIndirectReg _slic_read_IndirectReg#define _slic_set_DREGBIT(regVal,bit07) regVal |= (1<<bit07)#define _slic_clear_DREGBIT(regVal,bit07) regVal &= ~(1<<bit07)#define _slic_read_DREGBIT(regVal, bit07) (regVal & (1<<bit07))/*@ ZONE: initialization*/void slic_init_GPIO(uint32 channel);int32 slic_init_Test(int channel);int32 slic_init(uint32 channel);void clearInterrupts(int channel);void slic_init_IndirectReg(int channel);void slic_init_DirectReg(int channel);int32 slic_init_powerUp(int channel);int32 slic_init_powerLeakTest(int channel);void slic_init_calibrate(int channel);void slic_init_PCM(uint32 channel, int32 pcmFormat );void slic_init_Value(uint32 channel, int32 pcm_mode);int32 slic_init_VerifyIReg(int channel);/*@ ZONE: interrupt*/int32 _slic_PollInt(void);/*@ ZONE: ringing*/void slic_ring_standard(int channel);void slic_ring_activate(int channel);void slic_ring_stop(int channel);/*@ ZONE: tone*/void slic_tone_diableOSCs(int channel);void slic_tone_generation(tone_struct tone, int channel);void slic_tone_dial(int channel);void slic_tone_busy(int channel);void slic_tone_reorder(int channel);void slic_tone_congestion(int channel);void slic_tone_ringbackPbx(int channel);void slic_tone_ringBack(int channel);void slic_tone_ringBackJapan(int channel);void slic_tone_busyJapan(int channel);void slic_read_PCMCLK(int channel);/*@ DTMF*/unsigned char digit(int channel);void dtmfAction(int channel);/*@ Accessory*/void goActive(int channel);/*@ board information*/#define TOTAL_SLIC_CHANNEL 2/*@ register definition (direct)*/#define IDA_LO 28#define IDA_HI 29#define IAA 30#define CLOCK_MASK 0x04#define ID_ACCES_STATUS 31#define IAS_BIT 1#define I_STATUS 31#define SPI_MODE 0#define PCM_MODE 1#define PCM_XMIT_START_COUNT_LSB 2#define PCM_XMIT_START_COUNT_MSB 3#define PCM_RCV_START_COUNT_LSB 4#define PCM_RCV_START_COUNT_MSB 5#define DIO 6#define AUDIO_LOOPBACK 8#define AUDIO_GAIN 9#define LINE_IMPEDANCE 10#define HYBRID 11#define RESERVED12 12#define RESERVED13 13#define PWR_DOWN1 14#define PWR_DOWN2 15#define RESERVED16 16#define RESERVED17 17#define INTRPT_STATUS1 18#define INTRPT_STATUS2 19#define INTRPT_STATUS3 20#define INTRPT_MASK1 21#define INTRPT_MASK2 22#define INTRPT_MASK3 23#define DTMF_DIGIT 24#define RESERVED25 25#define RESERVED26 26#define RESERVED27 27#define I_DATA_LOW 28#define I_DATA_HIGH 29#define I_ADDRESS 30#define OSC1 32#define OSC2 33#define RING_OSC_CTL 34#define PULSE_OSC 35#define OSC1_ON__LO 36#define OSC1_ON_HI 37#define OSC1_OFF_LO 38#define OSC1_OFF_HI 39#define OSC2_ON__LO 40#define OSC2_ON_HI 41#define OSC2_OFF_LO 42#define OSC2_OFF_HI 43#define PULSE_ON__LO 44#define PULSE_ON_HI 45#define PULSE_OFF_LO 46#define PULSE_OFF_HI 47#define RING_ON__LO 48#define RING_ON_HI 49#define RING_OFF_LO 50#define RING_OFF_HI 51#define FSK_DATA 52 /*0 fsk_data */#define RESERVED53 53#define RESERVED54 54#define RESERVED55 55#define RESERVED56 56#define RESERVED57 57#define RESERVED58 58#define RESERVED59 59#define RESERVED60 60#define RESERVED61 61#define RESERVED62 62#define RESERVED63 63#define LINE_STATE 64#define ACTIVATE_LINE 0x11#define RING_LINE 0x44#define BIAS_SQUELCH 65#define BAT_FEED 66#define AUTO_STATE 67#define LOOP_STAT 68#define LOOP_DEBOUCE 69#define RT_DEBOUCE 70#define LOOP_I_LIMIT 71#define OFF_HOOK_V 72#define COMMON_V 73#define BAT_V_HI 74#define BAT_V_LO 75#define PWR_STAT_DEV 76#define PWR_STAT 77#define LOOP_V_SENSE 78#define LOOP_I_SENSE 79#define TIP_V_SENSE 80#define RING_V_SENSE 81#define BAT_V_HI_SENSE 82
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -