📄 blue.c
字号:
#if USE_BLUETOOTH
/* ************************************************************ */
#include "i2c.c"
/* ************************************************************ */
typedef struct en_char
{
unsigned char en ;
unsigned int LCD_zhi;
}lcd_disp_en;
const lcd_disp_en lcd_char[]={
'A',CHAR_A,'B',CHAR_B,'C',CHAR_C,'D',CHAR_D,
'E',CHAR_E,'F',CHAR_F,'G',CHAR_G,'H',CHAR_H,'I',CHAR_I,'J',CHAR_J,'K',CHAR_K,
'L',CHAR_L,'M',CHAR_M,'N',CHAR_N,'O',CHAR_O,'P',CHAR_P,'Q',CHAR_Q,'R',CHAR_R,
'S',CHAR_S,'T',CHAR_T,'U',CHAR_U,'V',CHAR_V,'W',CHAR_W,'X',CHAR_X,'Y',CHAR_Y,
'Z',CHAR_Z,' ',CHAR_ ,'0',CHAR_0,'1',CHAR_1,'2',CHAR_2,'3',CHAR_3,'4',CHAR_4,
'5',CHAR_5,'6',CHAR_6,'7',CHAR_7,'8',CHAR_8,'9',CHAR_9,'_',CHAR__,
//'*',CHAR_STAR,
//'#',CHAR_WELL,
'+',CHAR_ADD,
};
void LCD_char_7Segments(unsigned char B1, unsigned char C1)
{
unsigned char i1;
unsigned char c1;
i1=0;
#if LC75817
while(lc75817_char[i1].en!=C1){i1++;}
if (system_state == VCD_STATE && DISPLAY_CHG == 0 || Write_VCD_Buff) {
for(c1=0;c1<6;c1++){
vcd_lcdbuff[(unsigned char)(B1*6+c1)]=lc75817_char[i1].LCD_zhi[c1];}
}else {
for(c1=0;c1<6;c1++){
ShadowRam[(unsigned char)(B1*6+c1)]=lc75817_char[i1].LCD_zhi[c1];}
}
#else
while(lcd_char[i1].en!=C1){i1++;}
temp_16 = lcd_char[i1].LCD_zhi;
set_lcd_char(B1,temp_16);
return;
#endif
}
void ShowTftMsg(unsigned char *Msg)
{
unsigned char c1;
DISPLAY_CHG = 1;
count_time = 0;
VFD_processBlank(BLANK_ALL);
for(c1=0;c1<BLUE_DISP_MAX;c1++)
{
LCD_char_7Segments(c1, (unsigned char)(Msg[c1]));
}
SetBlueDisplay = 1;
return;
}
void ShowTelMessage(unsigned char *Data)
{
unsigned char i;
if(MoveNumberCount > BLUE_DISP_MAX) return;
#if LC75817
dial_length=12;
#else
dial_length = (unsigned char)(Data[0]);
#endif
for(i =0;i<dial_length;++i) {
AnswerDial[i] = Data[(unsigned char)(i+1)];
}
for(i =0;i<BLUE_DISP_MAX;++i) {
blue_disp_buff[i] = AnswerDial[i];
}
ShowTftMsg(blue_disp_buff);
MoveNumberCount = BLUE_DISP_MAX;
if(dial_length > BLUE_DISP_MAX) EnableMoveNumber = 1;
DetectBlueTimer = 30;//
return;
}
void ShowTelInputNumber(unsigned char Num)
{
unsigned char i = 0;
unsigned char MoveChar;
if(Num <10){ MoveChar = (unsigned char)(Num + '0');}
else{MoveChar=Num;}
dial[TelNumPtr] = MoveChar;
for(i = 0;i< BLUE_DISP_MAX-1;++i) {blue_disp_buff[i] = blue_disp_buff[i+1]; }
blue_disp_buff[(unsigned char)(BLUE_DISP_MAX-1)] = MoveChar;
if(TelNumPtr < 15) ++ TelNumPtr;
/************************************************************/
dial_length =TelNumPtr;
for(i =dial_length;i<BLUE_DISP_MAX;i++) {AnswerDial[i]=' ';}
for(i =0;i<dial_length;i++) {AnswerDial[i] = dial[i]; }
/************************************************************/
ShowTftMsg(blue_disp_buff);
return;
}
void ProcessMoveDialNumber(void)
{
if(BlueToothOn == 0) return;
if(EnableMoveNumber) {
unsigned char i = 0;
unsigned char MoveChar;
if(MoveNumberCount >= dial_length) {
for(i =0;i<BLUE_DISP_MAX;++i) {
blue_disp_buff[i] = AnswerDial[i];
}
MoveNumberCount = BLUE_DISP_MAX;
}else {
MoveChar = AnswerDial[MoveNumberCount];
for(i = 0;i< BLUE_DISP_MAX-1;++i) {
blue_disp_buff[i] = blue_disp_buff[i+1];
}
blue_disp_buff[(unsigned char)(BLUE_DISP_MAX-1)] = MoveChar;
++ MoveNumberCount;
}
if(CALL_HfRepeat==0) {
ShowTftMsg(blue_disp_buff);}
DetectBlueTimer = 20; // 2s
}
return;
}
void ShowTelInit(void)
{
unsigned char i = 0;
for(i = 0;i<12;++i) {
dial[i] = '_';
}
for(i = 0;i<BLUE_DISP_MAX;++i) {
blue_disp_buff[i] = '_';
}
TelNumPtr = 0;
MoveNumberCount = 0;
EnableMoveNumber = 0;
ShowTftMsg(blue_disp_buff);
return;
}
unsigned char ReadBlueStatus(void)
{
unsigned char Status;
BlueStartCondition();
if (BlueSendByte(I2CM_ADDR_MHFDVD)) {
BlueStopCondition();
return(0); // Write address
}
if (BlueSendByte(0x00)) {
BlueStopCondition();
return(0);
}
/* read data */
BlueStartCondition();
if (BlueSendByte((unsigned char)(I2CM_ADDR_MHFDVD | 0x01))){
BlueStopCondition();
return(0); // Read address
}
Status = BlueReadByte(1);
BlueStopCondition();
return(Status);
}
void WriteBlueStatus(unsigned char sel)
{
BlueStartCondition();
if (BlueSendByte(I2CM_ADDR_MHFDVD)) {
BlueStopCondition();
return; // Write address
}
BlueSendByte(0x00);
BlueSendByte(sel);
BlueStopCondition();
return;
}
void WriteBlueData(void)
{
unsigned char i;
unsigned char TempData;
for(i = 0;i<100;++i) {
if((ReadBlueStatus() & 0x01) == 0x00) {
break;
}
}
if(i >=99) {
return;
}
BlueStartCondition();
/* send device ID and write data */
BlueSendByte(I2CM_ADDR_MHFDVD);
BlueSendByte(0x21);
for(i = 0;i<WriteBlueDataBuf[0];++i) {
TempData = WriteBlueDataBuf[i];
BlueSendByte(TempData);
}
BlueStopCondition();
WriteBlueStatus(0x07);
//ProcessReadBlueData(0x21);
return;
}
unsigned char ProcessReadBlueData(unsigned char BlueId)
{
#if 1
unsigned char Length;
unsigned char i;
unsigned char TempCnt;
if (BLUE_DET == BLUEOFF) return(0);
for(i = 0;i<10;++i) {
if((ReadBlueStatus()& 0x02)){
break;
}
}
if(i >=10) return(0);
BlueStartCondition();
if (BlueSendByte(I2CM_ADDR_MHFDVD)) {
BlueStopCondition();
return(0); // Write address
}
if (BlueSendByte(BlueId)){
BlueStopCondition();
return(0);
}
/* read data */
BlueStartCondition();
if (BlueSendByte((unsigned char)(I2CM_ADDR_MHFDVD | 0x01))) {
BlueStopCondition();
return(0); // Read address
}
Length = BlueReadByte(0);
ReadBlueDataBuf[0] = Length;
if(Length>20) Length = 20;
TempCnt = 1;
if(Length > 1) {
Length -=1;
for(TempCnt=1;TempCnt<Length;++TempCnt) {
ReadBlueDataBuf[TempCnt] = BlueReadByte(0);
}
}
ReadBlueDataBuf[TempCnt] = BlueReadByte(1);
BlueStopCondition();
//ShowTftMsg1(&ReadBlueDataBuf[0]);
WriteBlueStatus(0x04);
#endif
return(1);
}
/***************************************************************************************/
void BlueToothInit(void)
{
WriteBlueDataBuf[0] = 3;
WriteBlueDataBuf[1] = START_REQ;
WriteBlueDataBuf[2] = 0xff;
WriteBlueData();
return;
}
void HfPairRequest(void)
{
WriteBlueDataBuf[0] = 3;
WriteBlueDataBuf[1] = PAIR_REQ;
WriteBlueDataBuf[2] = 90;
WriteBlueData();
ShowTftMsg((unsigned char*)("PAIR NUM"));
return;
}
void Audiotransferreq(void)
{
WriteBlueDataBuf[0] = 2;
WriteBlueDataBuf[1] = AUDIO_TRANSFER_REQ;
WriteBlueData();
return;
}
void HfEnableCallerId(void)
{
WriteBlueDataBuf[0] = 3;
WriteBlueDataBuf[1] = CALLER_ID_REQ;
WriteBlueDataBuf[2] = 1; // enable
WriteBlueData();
return;
}
void HfDisableCallerId(void)
{
WriteBlueDataBuf[0] = 3;
WriteBlueDataBuf[1] = CALLER_ID_REQ;
WriteBlueDataBuf[2] = 0; // disable
WriteBlueData();
return;
}
void HfAnswer(void)
{
WriteBlueDataBuf[1] = ANSWER_REQ;
WriteBlueDataBuf[0] = 2;
WriteBlueData();
ShowTftMsg((unsigned char*)(" ANSWER"));
return;
}
void HfRepeat(void)
{
WriteBlueDataBuf[1] = LAST_NUMBER_REDIAL_REQ;
WriteBlueDataBuf[0] = 2;
WriteBlueData();
ClearOpDurState();
ShowTftMsg((unsigned char*)("REP CALL"));
CALL_HfRepeat =1;
MoveNumberCount = 0;
return;
}
void HfDtmNum(unsigned char Num)
{
unsigned char i;
WriteBlueDataBuf[1] = SEND_DTMF_REQ;
WriteBlueDataBuf[0] = 3;
WriteBlueDataBuf[2] = Num;
WriteBlueData();
for(i = 0;i< BLUE_DISP_MAX-1;++i) {blue_disp_buff[i] = blue_disp_buff[i+1]; }
blue_disp_buff[(unsigned char)(BLUE_DISP_MAX-1)] = Num;
ShowTftMsg(blue_disp_buff);
return;
}
void HfDialnumber(void)
{
unsigned char TempCnt,length = TelNumPtr;
if(TelNumPtr == 0) {
ShowTftMsg((unsigned char*)("SEND ERR"));
return;
}
WriteBlueDataBuf[1] = DIAL_NUMBER_REQ;
WriteBlueDataBuf[0] = (unsigned char)(length+3);
WriteBlueDataBuf[2] = length;
for (TempCnt = 0; TempCnt <length; ++TempCnt) {
WriteBlueDataBuf[(unsigned char)(TempCnt+3)] = dial[TempCnt];
}
WriteBlueData();
// ShowTftMsg(SEND_DIAL);
return;
}
void HfHangUp(void)
{
WriteBlueDataBuf[1] = HANG_UP_REQ;
WriteBlueDataBuf[0] = 2;
WriteBlueData();
EnableMoveNumber = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -