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

📄 ezlink_modem_cmd.c.svn-base

📁 si4432官方的程序
💻 SVN-BASE
字号:
/*/*** ============================================================================**** FILE**  EZLink_Modem_cmd.c**** DESCRIPTION**  Contains all modem functions		    **** CREATED**  Silicon Laboratories Hungary Ltd**** COPYRIGHT**  Copyright 2008 Silicon Laboratories, Inc.  **	http://www.silabs.com**** ============================================================================*///===============================================================================================// Radio modem// ASCIII command interpreter//===============================================================================================#include "S8051.h"#include "EZLink_Modem_cmd.h"#include "uart.h"#include "Si4432.h"						/* =========================================================== *						 *						GLOBAL variables					   *						 * =========================================================== */extern xdata uint8 rf_ch;		//frequency channelextern xdata uint8 rf_pwr;		//RF output powerextern xdata uint8 rf_dr;		//datarateextern xdata uint8 mode;extern code uint8 FreqSettings[4][7];xdata uint8 cis;           				 // CMD interpreter statusxdata uint8 iparam;         				// command parameter, 0-255/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void CM_init(void)  +  + DESCRIPTION:    initialize the character interpreter statemachine  +  +	INPUT:			None  +  + RETURN:         None  +  + NOTES:          None  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void CMD_init(void){  cis = 0;}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void printAbout(void)  +  + DESCRIPTION:    print the firmware information to UART  +  +	INPUT:			None  +  + RETURN:         None  +  + NOTES:          None  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void printAbout(void){	if ( mode == 0 ) 	{			printf("SRW005,");		printf(HW_VERSION);		printf(",");		printf(FW_VERSION);		printf(",ED\r\n");		printf("EZLink demo ");		printf(BAND);		printf("MHz\r\n");  		printf("Silicon Laboratories, 2010\r\n");		printf("www.silabs.com\r\n");  	}	else	{		printf("SRW005,");		printf(HW_VERSION);		printf(",");		printf(FW_VERSION);		printf(",ED\r\n");		printf("EZLink demo ");		printf(BAND);		printf("MHz\r\n");		printf("Si4421 compatible mode\r\n");		printf("Silicon Laboratories, 2010\r\n");		printf("www.silabs.com\r\n");	}}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void printOK(void)  +  + DESCRIPTION:    print OK to UART  +  +	INPUT:			None  +  + RETURN:         None  +  + NOTES:          None  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void printOK(void){  printf("\n\rOK\n\r>\n\r");}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void printHelp(void)  +  + DESCRIPTION:    print help information to UART  +  +	INPUT:			None  +  + RETURN:         None  +  + NOTES:          None  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void printHelp(void){  if ( mode ==  0)  {	  printf("\n\rF=n : Set the rf channel");	  #ifdef  BAND_434  	  printf("\n\r 	2.4 kbps; channel number:0-3");	  printf("\n\r 	4.8 kbps; channel number:0-3");	  printf("\n\r 	9.6 kbps; channel number:0-3");	  printf("\n\r 	19.2 kbps; channel number:0-2");	  printf("\n\r 	38.4 kbps; channel number:0-2");	  printf("\n\r 	57.6 kbps; channel number:0-1");	  printf("\n\r 	115.2 kbps; channel number:0");	  #endif  	  #ifdef  BAND_470  	  printf("\n\r 	2.4 kbps; channel number:0-38");	  printf("\n\r 	4.8 kbps; channel number:0-38");	  printf("\n\r 	9.6 kbps; channel number:0-38");	  printf("\n\r 	19.2 kbps; channel number:0-38");	  printf("\n\r 	38.4 kbps; channel number:0-38");	  printf("\n\r 	57.6 kbps; channel number:0-38");	  printf("\n\r 	115.2 kbps; channel number:0-38");	  #endif     #ifdef  BAND_868	  printf("\n\r 	2.4 kbps; channel number:0-13");	  printf("\n\r 	4.8 kbps; channel number:0-13");	  printf("\n\r 	9.6 kbps; channel number:0-13");	  printf("\n\r 	19.2 kbps; channel number:0-10");	  printf("\n\r 	38.4 kbps; channel number:0-9");	  printf("\n\r 	57.6 kbps; channel number:0-7");	  printf("\n\r 	115.2 kbps; channel number:0-5");	  #endif	  #ifdef  BAND_915	  printf("\n\r 	2.4 kbps; channel number:0-59");	  printf("\n\r 	4.8 kbps; channel number:0-59");	  printf("\n\r 	9.6 kbps; channel number:0-59");	  printf("\n\r 	19.2 kbps; channel number:0-51");	  printf("\n\r 	38.4 kbps; channel number:0-44");	  printf("\n\r 	57.6 kbps; channel number:0-36");	  printf("\n\r 	115.2 kbps; channel number:0-28"); 	  #endif  	  #ifdef  BAND_950	  printf("\n\r 	2.4 kbps; channel number:0-23");	  printf("\n\r 	4.8 kbps; channel number:0-23");	  printf("\n\r 	9.6 kbps; channel number:0-23");	  printf("\n\r 	19.2 kbps; channel number:0-23");	  printf("\n\r 	38.4 kbps; channel number:0-23");	  printf("\n\r 	57.6 kbps; channel number:0-23");	  printf("\n\r 	115.2 kbps; channel number:0-11"); 	  #endif	  printf("\n\rD=n : Set the rf datarate (0 - 6)");	  printf("\n\r	0 - DR: 2.4kbps, DEV: +-36kHz, BBBW: 75.2kHz");	  printf("\n\r	1 - DR: 4.8kbps, DEV: +-45kHz, BBBW: 95.3kHz");	  printf("\n\r	2 - DR: 9.6kbps, DEV: +-45kHz, BBBW: 99.6kHz");	  printf("\n\r	3 - DR: 19.2kbps, DEV: +-9.6kHz, BBBW: 28.8kHz");		  printf("\n\r	4 - DR: 38.4kbps, DEV: +-19.2kHz, BBBW: 57.6kHz");	  printf("\n\r	5 - DR: 57.6kbps, DEV: +-28.8kHz, BBBW: 86.4kHz"); 	  printf("\n\r	6 - DR: 115.2kbps, DEV: +-57.6kHz, BBBW: 172.8kHz");	  printf("\n\rP=n : Set the rf output power");	  printf("\n\r      Si4431: 0-7 (-8dBm,-5dBm,-2dBm,+1dBm,+4dBm,+7dBm,+10dBm,+13dBm)");  	  printf("\n\r      Si4432: 0-7 (+1dBm,+2dBm,+5dBm,+8dBm,+11dBm,+14dBm,+17dBm,+20dBm)");	  printf("\n\rS?  : Print the current settings");	  printf("\n\rI   : Print firmware version information");	  printOK();  }  else  {	  printf("\n\rF=n : Set the rf channel");	  #ifdef BAND_434  	  printf("(0-3)");	  #endif  	  #ifdef BAND_470  	  printf("(0-38)");	  #endif	  #ifdef BAND_868	  printf("(0-13)");	  #endif	  #ifdef BAND_915 	  printf("(0-59)");	  #endif	  #ifdef BAND_950	  printf("(0-23)");		  	  #endif	  		  printf("\n\rRF parameters:");	  printf("\n\r	DR: 9.6kbps, DEV: +-90kHz, BBBW:184.8kHz");	  printf("\n\rP=n : Set the rf output power (0 - 3; +11dBm, +14dBm, +17dBm, +20dBm)");	  printf("\n\rS?  : Print the current settings");	  printf("\n\rI   : Print firmware version information");	  printOK();  }}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void CmdExec(char CMD)  +  + DESCRIPTION:    CMD character interpreter  +  +	INPUT:			CMD - received character form UART  +  + RETURN:         None  +  + NOTES:          None  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void CmdExec(uint8 CMD)                                          // CMD character interpreter{  if ((CMD != '\n') && (CMD != ' '))                            // don't use <space> and <LF>  switch (cis)                                                  // cis: Command Interpreter Status    {    case 0:                                                     // cis=0: basic state      switch (CMD)        {        case '\r':          printOK();          break;        case '?':          cis = 1;          break;        case 'I': case 'i':          cis = 2;          break;        case 'S': case 's':          cis = 3;          break;        case 'F': case 'f':          cis = 10;          iparam = 0;          break;        case 'D': case 'd':          cis = 20;          iparam = 0;          break;        case 'P': case 'p':          cis = 30;          iparam = 0;          break;		   			case 'C': case 'c':		  	 cis = 40;		  	 break; #ifdef BOOTLOADER		case 'B': case 'b':			 cis = 50;			 break;#endif//BOOTLOADER		           default:          cis = 255;          break;        }      break;    case 1:                                                     // cis=2: "?" arrived: print help      if (CMD == '\r')      {        printHelp();        cis = 0;        break;	  }	  else cis = 255;    break;    case 2:                                                     // cis=2: "I" arrived: print version info      if (CMD == '\r')      {      	printAbout();      	cis = 0;      	break;      }	  else cis = 255;		break;    case 3:                                                     // cis=2: "S" arrived: print current settings      switch( CMD )	  {	  case '=': break;      case '?': break;      case '\r': 		   	printf("\r\nChannel : %bd", rf_ch);       	printf("\r\nDatarate: %bd", rf_dr);			switch(rf_dr)			{					case 0: 					if ( mode == 0 ) 					{						printf("(DR: 2.4kbps, DEV: +-36kHz, BBBW: 75.2kHz)");					}					else					{						printf("(DR: 9.6kbps, DEV: +-90kHz, BBBW:184.8kHz)");					}					break;				case 1: 					printf("(DR: 4.8kbps, DEV: +-45kHz, BBBW: 95.3kHz)");					break;				case 2: 					printf("(DR: 9.6kbps, DEV: +-45kHz, BBBW: 99.6.8kHz)");					break;				case 3: 					printf("(DR: 19.2kbps, DEV: +-9.6kHz, BBBW: 28.8kHz)");					break;				case 4: 					printf("(DR: 38.4kbps, DEV: +-19.2kHz, BBBW: 57.6kHz)");					break;				case 5: 					printf("(DR: 57.6kbps, DEV: +-28.8kHz, BBBW: 86.4kHz)");					break;				case 6: 					printf("(DR: 115.2kbps, DEV: +-57.6kHz, BBBW: 172.8kHz)");					break;				default:					break;			}					      	printf("\r\nRF power: %bd", rf_pwr);       	printOK();       	cis = 0;       	break;      default:	    cis = 255;	    break;	  }    break;  	case 10:                                                    // cis=3: "F" arrived: frequency setting      switch (CMD)        {        case '=': break;        case '0': case '1': case '2': case '3': case '4':        case '5': case '6': case '7': case '8': case '9':          iparam = iparam * 10 + CMD - '0';          break;        case '\r':		  if( iparam >= FreqSettings[0][rf_dr] )		  {			iparam = 0;		  }		   rf_ch = iparam;	      set_frq(rf_ch);         printOK();          cis = 0;	      break;		default:          cis = 255;          break;          }	break;    case 20:                                                    // cis=3: "D" arrived: datarate setting      switch (CMD)        {        case '=': break;        case '0': case '1': case '2': case '3': case '4':        case '5': case '6': case '7': case '8': case '9':          iparam = iparam * 10 + CMD - '0';          		  break;        case '\r':		  if((mode == 0) && (iparam > 6))		  {		  	iparam = 0;		  }		  if((mode == 1) && (iparam > 1 ))		  {		  	iparam = 0;		  }		 		  		           rf_dr = iparam; 		  set_dr(rf_dr);		  printOK();          cis = 0;          break;        default:          cis = 255;          break;        }      break;    case 30:                                                    // cis=3: "P" arrived: output power setting      switch (CMD)      {			case '=': break;        	case '0': case '1': case '2': case '3': case '4':        	case '5': case '6': case '7': case '8': case '9':        		iparam = iparam * 10 + CMD - '0';         	break;        	case '\r':			 	if (iparam > 7)			 	{					iparam = 0;				 	}			 	rf_pwr = iparam;		       	set_pwr(rf_pwr);	       	printOK();	       	cis = 0;	       	break;			default:         	cis = 255;         	break;      }      break;	 case 40:    	if (CMD == '\r')		{			RFCWTest();		}		cis = 0;		break;#ifdef BOOTLOADER	 case 50:		// read from invalid Flash address to cause reset & goto BL mode      cis = *((U8 SEG_CODE *) 0xFFFD);          break;#endif//BOOTLOADER    case 255:                                                   // Bad command or parameter      printf("\r\nERROR\r\n>\r\n");      cis = 0;      break;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -