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

📄 extosdlib.h

📁 GM5621原代码
💻 H
📖 第 1 页 / 共 3 页
字号:
//  Rectangle and frame controls
//
typedef struct ST_OSD_RECTANGLE_CTRLStruct
{
    BYTE    TileId;
    BYTE    XPos;
    BYTE    YPos;
    BYTE    XSize;
    BYTE    YSize;
    BYTE ROM *  Colors;
} ST_OSD_RECTANGLE_CTRL;

typedef ST_OSD_RECTANGLE_CTRL ST_OSD_RECTANGLEBUTTON_CTRL;

typedef struct ST_OSD_FRAME_CTRLStruct
{
    BYTE    TileId;
    BYTE    XPos;
    BYTE    YPos;
    BYTE    XSize;
    BYTE    YSize;
    BYTE ROM *  Colors;
    ST_OSD_UNI_CONTROL_CHARS    ControlCharSet;
} ST_OSD_FRAME_CTRL;

typedef ST_OSD_FRAME_CTRL ST_OSD_FRAME2BPP_CTRL;
typedef ST_OSD_FRAME_CTRL ST_OSD_FRAME4BPP_CTRL;


//
//	Tab control
//
typedef struct ST_OSD_TABCONTROL_CTRLStruct
{
    BYTE    TileId;
    BYTE    XPos;
    BYTE    YPos;
    BYTE    XSize;
    BYTE    YSize;
    BYTE ROM *  Colors;
    ST_OSD_UNI_CONTROL_CHARS    ControlChars;
    BYTE    TabNum;
    BYTE    TabButtonRegion_XSize;
    BYTE    TabButtonRegion_YSize;
} ST_OSD_TABCONTROL_CTRL;


//*****************************************************************
//  Key Pad definitions
//*****************************************************************
typedef BYTE gmt_KEY_INDEX;
typedef WORD gmt_GPIO_KEY_VALUE;

typedef struct gmt_ST_KEYPAD_STATEStruct
{
    gmt_KEY_INDEX   B_iButton;
    BYTE            B_iTimer;
} gmt_ST_KEYPAD_STATE;

typedef struct gmt_ST_TRANSLATION_TABLE_ENTRYStruct
{
    gmt_ST_KEYPAD_STATE St_PreviousKS;
    gmt_ST_KEYPAD_STATE St_CurrentKS;
    BYTE                B_iEvent;
    BYTE                B_iAutorepeatStartDelay;
    BITFIELD            W_iAutorepeatDelay : 6;
    BITFIELD            W_iAutorepeatEnable : 1;
    BITFIELD            W_iTableEnd : 1;
} gmt_ST_TRANSLATION_TABLE_ENTRY;

typedef struct gmt_ST_GPIOStruct
{
    BYTE    Port;   // GPIO or MCU port
    BYTE    Bit;    // bit of this port
} gmt_ST_GPIO;

typedef struct gmt_ST_GPIO_TRANSLATIONStruct
{
    gmt_GPIO_KEY_VALUE  KeyValue;   // scan code from GPIO keypad
    gmt_KEY_INDEX       KeyIndex;       // code for translation tables
} gmt_ST_GPIO_TRANSLATION;

typedef struct
{
   gmt_ST_KEYPAD_STATE PreviousKS;
   gmt_ST_KEYPAD_STATE CurrentKS;
   BYTE KeypadDriverState;	  	//  State of keypad driver
   BYTE	startDelay;						//  Autorepeat start delay
   BYTE scanDelay;						//  Autorepeat scan delay
} gmt_KEY_THREAD;


//
// Keypad functions
//
void far gm_KeypadOsdInit (void);
void far gm_ProcessKeypadOsdEvent( void);

// New keypad defines
#define	WBK_EXTRACT_CODE_BYTE(a)	a

typedef	gmt_KEY_INDEX (* KeypadFunc)(BYTE ROM*);

typedef struct WBK_KEYPAD_DEFINITIONStruct
{
	BYTE		B_ChanNumber;				/* channel number for this type of keypad (ADC1,ADC2,ADC3,GPIO1,GPIO2,..) */
	BYTE ROM*	Bp_KeyValues;				/* pointer to key values table */
	BYTE		B_KeysNumber;				/* keys number in table */
	KeypadFunc	GetKeyValue;				/* pointer to keypad driver. a driver returns the source code */
	KeypadFunc	InitKeypad;				/* pointer to keypad driver. a driver returns the source code */
	BYTE		B_CodeLen;					/* phisical code length in key values table */
	BYTE		B_Delta;					/* phisical delta value */
} WBK_KEYPAD_DEFINITION;

//*****************************************************************
//  State Machine
//*****************************************************************
typedef struct
{
	BYTE ROM * ROM* StateSet;
	WORD DefaultStateID;
}OSD_THREAD;

typedef struct
{
	 BYTE ROM * CurrentStatePtr;
	 BYTE ROM * NextStatePtr;
	 BYTE ROM * SaveStatePtr;	 
}SmThreadContextType;

typedef struct SmPtrStruct
{
	BYTE ROM* SM_EventTable;
	BYTE ROM* ROM*	ActionOpSet;
	BYTE ROM* ROM*	ActionSet;
	BYTE ROM* ROM*	ActTableSet;
	BYTE                 NumberOfThreads;
	OSD_THREAD ROM*		GlobalThreadPtr;
	SmThreadContextType* ThreadContextPtr;
} SmPtrType;

typedef enum StateControlByteEnum
{
    SCB_CtrlByte    =   0x00,
    SCB_NOCtrlByte  =   0x80,  // traslation table
    SCB_TranslTbl   =   0x08,
    SCB_StateData   =   0x10,
    SCB_IncDec      =   0x20,
    SCB_Parent      =   0x40,
    SCB_Inherit     =   0x01
} StateControlByteType;

typedef enum StateActionTblCtrlBitsEnum
{
    SAT_CB_00       =   0,              //Event - Action
    SAT_CB_01       =   BIT6,           //Event
    SAT_CB_10       =   BIT7,           //Event - Condition Ctrl
    SAT_CB_11       =   BIT7 | BIT6,    //MultiAction Ctrl - Condition Ctrl
    SAT_EvtAct_1    =   (BIT6),
    SAT_EvtAct_2    =   (BIT7),
    SAT_Reference   =   (BIT7 | BIT6),
    SAT_Condition   =   (BIT4),
    SAT_MultiCond   =   (BIT5 | BIT4)
} StateActionTblCtrlBitsType;

typedef enum TextEditorCtrlEnum
{		DRAW = 0,
		DEC,
		INC,
		INCPOS,
		DECPOS
} TextEditorCtrlType;

/*
typedef enum ChangeChannelCtrlEnum
{
		KEY_0,
		KEY_1,
		KEY_2,
		KEY_3,
		KEY_4,
		KEY_5,
		KEY_6,
		KEY_7,
		KEY_8,
		KEY_9,
		KEY_ENTER,
		KEY_CHANGESIZE,
		KEY_DRAW,
		KEY_DRAWCURR,
		KEY_EDITCURR
} ChangeChannelCtrlType;
*/

// State data encoding
#define ShortIDRef(a)   a
#define ShortPtrRef(a)  BIT7 | (((WORD)(a)) >> 8), (BYTE)a
#define LongIDRef(a)    BIT7 | BIT6 | (BYTE)(((WORD)(a)) >> 8), (BYTE)(a)
#define LongBankRef(bank,a) BIT7 | BIT6 | BIT5 | bank, ((WORD)(a)) >> 8,(BYTE)a

#define ShortEATRef(a)	(a)
#define LongEATRef(a)	BIT7 | (((WORD)(a)) >> 8), (BYTE)(a)

#define SAT_CB_00_EVT_SHIFT		3
#define SAT_CB_10_EVT_SHIFT		2
#define SAT_CB_11_MAC_SHIFT		2

#define SAT_CB_00_EVT_MASK      (BIT3 | BIT4 | BIT5)
#define SAT_CB_00_ACT_MASK      (BIT0 | BIT1 | BIT2)

#define SAT_CB_10_EVT_MASK      (BIT2 | BIT3 | BIT4 | BIT5)
#define SAT_CB_10_CND_MASK      (BIT0 | BIT1)

#define SAT_CB_11_MAC_MASK      (BIT2 | BIT3 | BIT4)
#define SAT_CB_11_CND_MASK      (BIT0 | BIT1)
#define SAT_CB_11_ATREF         (BIT5)
#define SAT_CB_11_ATREF_MASK    (BIT4 | BIT3 | BIT2 | BIT1 | BIT0)

#define SAT_CB_MASK             (BIT7 | BIT6)

#define Fit_00(Event,Action)        (((Event) << SAT_CB_00_EVT_SHIFT) | (Action))
#define Fit_10(Event,CndCtrl)       (((Event) << SAT_CB_10_EVT_SHIFT) | (CndCtrl))
#define Fit_11(CndCtrl, MultiActn)  (((MultiActn) << SAT_CB_11_MAC_SHIFT) | (CndCtrl))

typedef enum StateDataCtrlBitsEnum
{
    SDC_LastEntry = 0x3f,
    SDC_Action_Count,
    SDC_Count
} StateDataCtrlBitsType;

// Reference Type
typedef enum ReferenceEnum
{
    RFT_NoReference,    //not a reference
    RFT_ShortIDRef,     //1 byte ID very within the range 0x0 - 0x7f
    RFT_ShortPtrRef,    // NOT SUPPORTED
    RFT_LongIDRef,      //2 byte ID very within the range 0x0 - 0x7fff
    RFT_LongPtrRef      // NOT SUPPORTED
};

typedef BYTE far (*ActionFuncType)(BYTE);

#define EXTRACT_2B(Cnst)  (BYTE)Cnst, (BYTE)(Cnst >>8)


//
// State machine functions
//
void far gm_InitSm (SmPtrType *Ps_SmInitStruct);
SmThreadContextType far * far gm_GetThreadContext();
void far gm_SelectThread(BYTE B_ThreadID);
void far gm_OsdEventHandler_ST (BYTE B_OsdEvent);
void far gm_OsdEventHandler_MT (BYTE B_ThreadID, BYTE B_OsdEvent);
void far gm_OsdEventHandler (BYTE B_OsdEvent);
BYTE ROM * far gm_OsdGetActionOperand (void);
BYTE far gm_OsdGetCurrentSATOffsetByte (void);
WORD far gm_OsdGetCurrentSATOffsetWord (void);
DWORD far gm_OsdGetCurrentSATOffsetDWord(void);
BYTE far gm_OsdGetCurrentStateTranslTable (void);
BYTE far gm_OsdGetStateDataByte(BYTE B_Offset);
WORD far gm_OsdGetStateDataWord(BYTE B_Offset);

void far gm_DecState(void);
void far gm_DecStateBy(void);
void far gm_GoToState(void);
void far gm_IncState(void);
void far gm_IncStateBy(void);
void far gm_SaveState(void);
void far gm_RestoreState(void);


//*****************************************************************
//  Adjuster Engine
//*****************************************************************
#define GET_ADJ 2
#define INC_ADJ 0
#define DEC_ADJ 1

#define VT_MASK_TYPE        (BIT0 | BIT1)
#define VT_MASK_MIN         (BIT5)
#define VT_MASK_MAX         (BIT6)
#define VT_GROUP_IND(val)   ((val >> 2) & (BIT0 | BIT1 | BIT2))
#define VT_MASK_CALC        (BIT7)

typedef struct AdjusterPropertyEntryStruct
{
    BYTE    ctrl;
    WORD    offset;
    BYTE    step;
    BYTE    id;
    WORD    min;
    WORD    max;
} AdjusterPropertyEntry;

typedef struct UP_StructureDefStruct
{
    void*   ptr;
} UP_StructureDef;


typedef struct UP_ModeSwitchersDefStruct
{
    BYTE*   ptr;
    BYTE    Number;
} UP_ModeSwitchersDef;


typedef struct AdjEngineInitStruct
{
	BYTE ROM *UserDefAdjusterProperty;
    BYTE ROM * ROM *AdjusterFuncSet;
    BYTE ROM * ROM *MinMaxFuncSet;
    BYTE ROM * ROM *StepFuncSet;
    UP_StructureDef ROM *UserPrefStructureDefenitions;
    UP_ModeSwitchersDef ROM *ModeSwitchers;
} AdjEngineInitType;

typedef struct ST_OSD_SET_ADJUSTER_CTRLStruct
{
    WORD    AdjusterID;
    WORD    Value;
} ST_OSD_SET_ADJUSTER_CTRL;

typedef struct ST_OSD_LONGVALUEHEX_CTRLStruct
{
	BYTE	TileId;
	BYTE	XPos;
	BYTE	YPos;
	BYTE	XSize;
	BYTE	YSize;
	BYTE ROM *	Colors;
	ST_OSD_UNI_USED_GLYPHS	UsedGlyphs;
	WORD	Associate;
	BYTE	Horizontal;
	BYTE	Vertical;
	WORD	MinValue;
	WORD	MaxValue;
	BYTE	Format;
	BYTE	NumPositions;
} ST_OSD_LONGVALUEHEX_CTRL;

typedef struct ST_OSD_LONGVALUEHEXLOWERCASE_CTRLStruct
{
	BYTE	TileId;
	BYTE	XPos;
	BYTE	YPos;
	BYTE	XSize;
	BYTE	YSize;
	BYTE ROM *	Colors;
	ST_OSD_UNI_USED_GLYPHS	UsedGlyphs;
	WORD	Associate;
	BYTE	Horizontal;
	BYTE	Vertical;
	WORD	MinValue;
	WORD	MaxValue;
	BYTE	Format;
	BYTE	NumPositions;
} ST_OSD_LONGVALUEHEXLOWERCASE_CTRL;

typedef struct ST_OSD_LONGVALUEBUTTONHEX_CTRLStruct
{
	BYTE	TileId;
	BYTE	XPos;
	BYTE	YPos;
	BYTE	XSize;
	BYTE	YSize;
	BYTE ROM *	Colors;
	ST_OSD_UNI_USED_GLYPHS	UsedGlyphs;
	WORD	Associate;
	BYTE	Horizontal;
	BYTE	Vertical;
	WORD	MinValue;
	WORD	MaxValue;
	BYTE	Format;
	BYTE	NumPositions;
} ST_OSD_LONGVALUEBUTTONHEX_CTRL;

typedef struct ST_OSD_LONGVALUEBUTTONHEXLOWERCASE_CTRLStruct
{
	BYTE	TileId;
	BYTE	XPos;
	BYTE	YPos;
	BYTE	XSize;
	BYTE	YSize;
	BYTE ROM *	Colors;
	ST_OSD_UNI_USED_GLYPHS	UsedGlyphs;
	WORD	Associate;
	BYTE	Horizontal;
	BYTE	Vertical;
	WORD	MinValue;
	WORD	MaxValue;
	BYTE	Format;
	BYTE	NumPositions;
} ST_OSD_LONGVALUEBUTTONHEXLOWERCASE_CTRL;

typedef enum VT_EnumLib
{
    VT_BYTE = 0,
    VT_SBYTE = 1,
    VT_WORD = 2,
    VT_SWORD = 3,
    VT_FuncMin = (1 << 5),

⌨️ 快捷键说明

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