⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slic.h

📁 linux下的SPI总线驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -