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

📄 skman.c

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 C
字号:
/****************************************************************
**                                                              *
**  FILE         :  SKMan.C                                     *
**  COPYRIGHT    :  (c) 2001 .Xiamen Yaxon NetWork CO.LTD       *
**                                                              *
**                                                              *
**  By : CCH 2002.1.15                                          *
****************************************************************/
#include "includes.h"
#include "tools.h"
#include "db_sk.h"
#include "db_tb.h"
#include "prompt.h"
#include "menuwin.h"
#include "itemmenu.h"
#include "prompt.h"
#include "telbook.h"
#include "skman.h"



#if EN_HANDSET > 0

/*
********************************************************************************
*                  DEFINE MODULE VARIANTS
********************************************************************************
*/
static INT16S SelRecord;
static INT8U  dplybuf[30];
static MENUWIN_STRUCT MenuWinEntry;


static void Informer(INT8U tellen, INT8U *tel, INT8U namelen, INT8U *name)
{
    namelen = namelen;
    name    = name;
    PopMenuWin();
    ActivateStringPrompt("已存");
    ModifySKRec(SelRecord, tellen, tel);
}

static void SetProc(void)
{
    if (!ListTB_RET(Informer)) {
        PopMenuWin();
        ActivateStringPrompt("无电话本记录");
    }
}

static void DisplayProc(void)
{
    INT8U len;
    
    PopMenuWin();
    len = GetSKRecTel(SelRecord, dplybuf);
    if (len == 0) {
        strcpy((char *)dplybuf, "(空白)");
    } else {
        dplybuf[len] = '\0';
    }
    ActivateStringPrompt_TIME((char *)dplybuf, 0);
}

static void ACK_DelProc(void)
{
    PopMenuWin();
    PopMenuWin();
    ActivateStringPrompt("已删除");
    ClearSKRec(SelRecord);
}

static void DelProc(void)
{
    ActivateSelPrompt("删除?", 0, ACK_DelProc);
}

static ITEMMENU_STRUCT  MENU_SET        = {ITEM_FCN,  "设定",     SetProc, 0, 0};
static ITEMMENU_STRUCT  MENU_DISPLAY    = {ITEM_FCN,  "显示号码", DisplayProc, 0, 0};
static ITEMMENU_STRUCT  MENU_DEL        = {ITEM_FCN,  "删除",     DelProc, 0, 0};
static ITEMMENU_STRUCT *MENU_OP_CHILD[] = {&MENU_SET, &MENU_DISPLAY, &MENU_DEL};
static ITEMMENU_STRUCT  MENU_OP         = {ITEM_LMENU, 0, 0, 3, MENU_OP_CHILD};


static void Handler_KEY_ACK(void)
{
    SelRecord = GetMenuWinRecordNum();
    ActivateItemMenu(&MENU_OP);
}

static INT16U MaxRecordProc(void)
{
    return MAX_SKREC;
}

static INT16U ReadRecordProc(INT16S numrec, INT8U *ptr)
{
    INT8U len, templen1, templen2;
    
    len    = strlen("按键");
    memcpy(ptr, "按键", len);
    ptr   += len;
    DecToAscii(ptr, numrec, 1);
    len++;
    ptr++;
    *ptr++ = '\n';
    len++;
    templen1 = GetSKRecTel(numrec, dplybuf);
    if (templen1 == 0) {
        templen1 = strlen("(空白)");
        memcpy(ptr, "(空白)", templen1);
    } else {
        templen2 = GetTBNameByTel(dplybuf, templen1, dplybuf);
        if (templen2 > 0) templen1 = templen2;
        memcpy(ptr, dplybuf, templen1);
    }
    len += templen1;
    return len;
}

static void ListSK(void)
{
    memset(&MenuWinEntry, 0, sizeof(MenuWinEntry));
    MenuWinEntry.WinAttrib       = WIN_FMENU;
    MenuWinEntry.Handler_KEY_ACK = Handler_KEY_ACK;
    MenuWinEntry.MaxRecordProc   = MaxRecordProc;
    MenuWinEntry.ReadRecordProc  = ReadRecordProc;
    ActivateMenuWin(&MenuWinEntry);
}

ITEMMENU_STRUCT MENU_SKMAN = {ITEM_FCN, "单键拨号", ListSK, 0, 0};

#endif

⌨️ 快捷键说明

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