📄 freemaster.h
字号:
/******************************************************************************
*
* Freescale Semiconductor Inc.
* (c) Copyright 2004-2005 Freescale Semiconductor, Inc.
* (c) Copyright 2001-2004 Motorola, Inc.
* ALL RIGHTS RESERVED.
*
****************************************************************************//*!
*
* @file freemaster.h
*
* @brief FreeMaster Driver main API header file
*
* @version 1.0.3.0
*
* @date Jul-25-2006
*
*******************************************************************************
*
* This is the only header file needed to be included by the user application
* to implement the FreeMaster interface. In addition, user has to write her
* "freemaster_cfg.h" configuration file and put it anywhere on the #include path
*
*******************************************************************************/
#ifndef __FREEMASTER_H
#define __FREEMASTER_H
// identify our current platform
#define FMSTR_PLATFORM_HC12 1
// user configuration
#include "freemaster_cfg.h"
// HCS12X only: determine large/small model for FreeMASTER pointers and memory
// access. The user may enable FMSTR_LARGE_MODEL model in configuration file
// even if project is configured for small or banked models.
#ifdef __HCS12X__
#ifndef FMSTR_LARGE_MODEL
#if defined(__LARGE__)
#define FMSTR_LARGE_MODEL 1
#elif defined(__SMALL__) || defined(__BANKED__)
#define FMSTR_LARGE_MODEL 0
#else
#error Unknown compiler memory model
#endif
#endif
#else
// large driver model not implemented on HC12 or HCS12
#ifndef FMSTR_LARGE_MODEL
#define FMSTR_LARGE_MODEL 0
#endif
#if FMSTR_LARGE_MODEL
#error Large FreeMASTER driver model possible on HCS12X only
#endif
#endif
/*****************************************************************************
* Global types
******************************************************************************/
#if FMSTR_LARGE_MODEL
typedef Byte*__far FMSTR_ADDR; // CPU address type (3bytes)
#else
typedef Byte*__near FMSTR_ADDR; // CPU address type (2bytes)
#endif
typedef Word FMSTR_SIZE; // general size type (at least 16 bits)
typedef Byte FMSTR_BOOL; // general boolean type
// application command-specific types
typedef Byte FMSTR_APPCMD_CODE;
typedef Byte FMSTR_APPCMD_DATA, *FMSTR_APPCMD_PDATA;
typedef Byte FMSTR_APPCMD_RESULT;
// pointer to application command callback handler
typedef FMSTR_APPCMD_RESULT (*FMSTR_PAPPCMDFUNC)(FMSTR_APPCMD_CODE,FMSTR_APPCMD_PDATA,FMSTR_SIZE);
/*****************************************************************************
* TSA-related user types and macros
******************************************************************************/
#ifdef __HCS12X__
#if FMSTR_LARGE_MODEL
// sizeof(void*) is 3 in large model, we must make TSA entries 4 bytes
#define FMSTR_TSATBL_STRPTR LWord
#define FMSTR_TSATBL_VOIDPTR LWord
#define FMSTR_TSATBL_STRPTR_CAST(x) ((LWord)((char*__far)(x)))
#define FMSTR_TSATBL_VOIDPTR_CAST(x) ((LWord)((void*__far)(x)))
#else
// HCS12X small model near pointers
#define FMSTR_TSATBL_STRPTR char*__near
#define FMSTR_TSATBL_VOIDPTR void*__near
#endif
#endif
#include "freemaster_tsa.h"
/*****************************************************************************
* Constants
******************************************************************************/
// application command status information
#define FMSTR_APPCMDRESULT_NOCMD 0xff
#define FMSTR_APPCMDRESULT_RUNNING 0xfe
#define MFSTR_APPCMDRESULT_LASTVALID 0xf7 // F8-FF are reserved
// recorder time base declaration helpers
#define FMSTR_REC_BASE_SECONDS(x) ((x) & 0x3fff)
#define FMSTR_REC_BASE_MILLISEC(x) (((x) & 0x3fff) | 0x4000)
#define FMSTR_REC_BASE_MICROSEC(x) (((x) & 0x3fff) | 0x8000)
#define FMSTR_REC_BASE_NANOSEC(x) (((x) & 0x3fff) | 0xc000)
/*****************************************************************************
* Global functions
******************************************************************************/
// PC Master serial communication API
void FMSTR_Init(void); // general initiazlation
void FMSTR_Poll(void); // polling call, use in SHORT_INTR and POLL_DRIVEN modes
#include "non_bank.sgm"
void FMSTR_Isr(void); // SCI interrupt handler for LONG_INTR and SHORT_INTR modes
#include "default.sgm"
// recorder API
void FMSTR_Recorder(void);
void FMSTR_TriggerRec(void);
void FMSTR_SetUpRecBuff(FMSTR_ADDR nBuffAddr, FMSTR_SIZE nBuffSize);
// Application commands API
FMSTR_APPCMD_CODE FMSTR_GetAppCmd(void);
FMSTR_APPCMD_PDATA FMSTR_GetAppCmdData(FMSTR_SIZE* pDataLen);
FMSTR_BOOL FMSTR_RegisterAppCmdCall(FMSTR_APPCMD_CODE nAppCmdCode, FMSTR_PAPPCMDFUNC pCallbackFunc);
void FMSTR_AppCmdAck(FMSTR_APPCMD_RESULT nResultCode);
void FMSTR_AppCmdSetResponseData(FMSTR_ADDR nResultDataAddr, FMSTR_SIZE nResultDataLen);
#endif /* __FREEMASTER_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -