📄 mcclib.h
字号:
*******************************************************************************
*/
/* 创建一环形队列消息对象:pRBMName为消息对象名称,最大16个字符,当同名的消息对象
* 存在时,其它参数不起作用,返回同名对象标识;
*
* wdSize说明消息缓存的数目;
*
* FIFOWait说明获得消息对象时的等待方式,为true时按先进先出方式等待,为false时
* 按优先级方式等待;
*
* 返回值为环形队列消息对象标识,用于环形队列消息对象相关的系统调用。
*/
extern CWORD _cdecl_ CreateRBM(STR *pRBMName, CWORD wdSize, CBOOL FIFOWait);
/* 无等待获取环形队列消息:idRBM为环形队列消息对象标识,pMsg为MSG结构指针,
* 指向消息缓存;获取后返回TSC_SUCCESS
*/
extern CWORD _cdecl_ GetRBMTry(CWORD idRBM, MSG *pMsg);
/* 以等待方式获取环形队列消息:idRBM为环形队列消息对象标识;pMsg为MSG结构指针,
* 指向消息缓存;dwTime说明超时时间片,dwTime为0时,将一直等到取得环形队列消息,
* dwTime不为0时,等到超时后,不再继续等待;获取环形队列消息后返回TSC_SUCCESS,
* 超时后返回TIMEOUT,其它值说明出错。
*/
extern CWORD _cdecl_ GetRBM(CWORD idRBM, MSG *pMsg, DWORD dwTime);
/*******************************************************************************
* 发送环形队列消息:idRBM为环形队列消息对象标识,pMsg为MSG结构指针; *
* *
* 成功后返回TSC_SUCCESS。 *
* *
* 此函数可从中断中调用。 *
*/
extern CWORD _cdecl_ SendRBM(CWORD idRBM, MSG *pMsg);
/*
*******************************************************************************
* 优先级消息对象相关函数 *
*******************************************************************************
*/
/* 创建一优先级消息对象:pMSGName为消息对象名称,最大16个字符,当同名的消息对象
* 存在时,其它参数不起作用,返回同名对象标识;
*
* wdSize说明消息缓存的数目;
*
* GeterFIFOWait说明获得消息对象时的等待方式,为true时按先进先出方式等待,为
* false时按优先级方式等待;
*
* SenderFIFOWait说明当发送消息而无缓存可用时的等待方式,为true时按先进先出方
* 式等待,为false时按优先级方式等待;
*
* 返回值为优先级消息对象标识,用于优先级消息对象相关的系统调用。
*/
extern CWORD _cdecl_ CreateMSG(STR *pMSGName, CWORD wdSize,
CBOOL GeterFIFOWait, CBOOL SenderFIFOWait);
/* 无等待获取优先级消息:idMsg为优先级消息对象标识,pMsg为MSG结构指针,
* 指向消息缓存;获取后返回消息的优先级
*/
extern CWORD _cdecl_ GetMSGTry(CWORD idMsg, MSG *pMsg);
/* 以等待方式获取优先级消息:idMsg为优先级消息对象标识;pMsg为MSG结构指针,指
* 向消息缓存;dwTime说明超时时间片,dwTime为0时,将一直等到取得优先级消息,
* dwTime不为0时,等到超时后,不再继续等待;成功获取消息后返回消息的优先级,
* 超时后返回TIMEOUT,其它值说明出错。
*/
extern CWORD _cdecl_ GetMSG(CWORD idMsg, MSG *pMsg, DWORD dwTime);
/* 以等待方式发送优先级消息:idMsg为优先级消息对象标识;pMsg为MSG结构的消息指针,
* wdPrio为消息优先级,须为小于16的无符号整数,dwTime说明超时时间片,dwTime为0时,
* 将一直等到有消息缓存可用,dwTime不为0时,等到超时后,不再继续等待;有消息缓存
* 可用且发送完毕消息后返回TSC_SUCCESS,超时后返回TIMEOUT,其它值说明出错。
*/
extern CWORD _cdecl_ SendMSG(CWORD idMsg, CWORD wdPrio, MSG *pMsg, DWORD dwTime);
/*******************************************************************************
* 发送优先级消息:idMsg为优先级消息对象标识,pMsg为MSG结构指针,wdPrio为消息 *
* 优先级,必须为小于16的无符号整数; *
* *
* 成功后返回TSC_SUCCESS。 *
* *
* 此函数可从中断中调用。 *
*/
extern CWORD _cdecl_ SendMSGTry(CWORD idMsg, CWORD wdPrio, MSG *pMsg);
/*
*******************************************************************************
* 位域标志对象相关函数 *
*******************************************************************************
*/
/* Flag set and clear mode */
#define FLAG_OPT_BIT (0x0008) /* binary: 1000 */
#define FLAG_SET_BIT (0x0004) /* binary: 0100 */
#define FLAG_OPT_ALL (0x0002) /* binary: 0010 */
#define FLAG_RST_BIT (0x0001) /* binary: 0001 */
#define FLAG_VALID_OPT_BIT (0x0004) /* length: 0004 */
#define FLAG_CLR_BIT (0x0000) /* binary: 0000 */
#define FLAG_OPT_ANY (0x0000) /* binary: 0000 */
/* 设置位域标志模式 */
#define FLAG_SET (FLAG_SET_BIT | FLAG_OPT_BIT) /* 设置位域标志 */
#define FLAG_CLR (FLAG_CLR_BIT | FLAG_OPT_BIT) /* 清除位域标志 */
/* 获取位域标志模式 */
#define FLAG_ALL_SET (FLAG_SET | FLAG_OPT_ALL) /* 位域标志全部设置 */
#define FLAG_ANY_SET (FLAG_SET | FLAG_OPT_ANY) /* 位域标志任一设置 */
#define FLAG_ALL_CLR (FLAG_CLR | FLAG_OPT_ALL) /* 位域标志全部清除 */
#define FLAG_ANY_CLR (FLAG_CLR | FLAG_OPT_ANY) /* 位域标志任一清除 */
/* 获取位域标志模式扩展 */
#define FLAG_GET_AND_RESET (FLAG_RST_BIT | FLAG_OPT_BIT) /* 获取并反置之 */
/* 创建一位域标志对象:pFlagName为位域标志对象名称,最大16个字符,当同名的位域标志
* 对象存在时,其它参数不起作用,返回同名对象标识;
*
* cwInitFlag说明初始化位域;
*
* FIFOWait说明获得位域标志对象时的等待方式,为true时按先进先出方式等待,为false
* 时按优先级方式等待;
*
* 返回值为位域标志对象标识,用于位域标志对象相关的系统调用。
*/
extern CWORD _cdecl_ CreateFlag(STR *pFlagName, CWORD cwInitFlag, CBOOL FIFOWait);
/* 无等待获取位域标志:idFlag为位域标志对象标识,cwFlag说明所要求的位域标志;
* wdMode说明位域标志的类型,为 FLAG_ALL_SET,FLAG_ANY_SET,FLAG_ALL_CLR 及
* FLAG_ANY_CLR 其中之一 也可与 FLAG_GET_AND_RESET 联合使用;cwdFlagPtr为一
* 整数指针,若不为空,则该整数为所取得的位域标志;获取所要求的位域标志后返
* 回SUCESS。
*/
extern CWORD _cdecl_ GetFlagTry(CWORD idFlag, CWORD cwFlag,
CWORD wdMode, CWORD *cwdFlagPtr);
/* 以等待方式获取位域标志:idFlag为位域标志对象标识;cwFlag说明所要求的位域标
* 志;wdMode说明位域标志的类型,为 FLAG_ALL_SET,FLAG_ANY_SET,FLAG_ALL_CLR
* 及FLAG_ANY_CLR 其中之一 也可与 FLAG_GET_AND_RESET 联合使用;cwdFlagPtr为一
* 整数指针,若不为空,则该整数为所取得的位域标志;dwTime 说明超时时间片,当
* dwTime为0时,将一直等到取得位域标志,当dwTime不为0时,等到超时后,不再继续
* 等待;成功获取位域标志后返回SUCESS,超时后返回TIMEOUT,其它值说明出错。
*/
extern CWORD _cdecl_ GetFlag(CWORD idFlag, CWORD cwFlag, CWORD wdMode,
CWORD *cwFlagPtr, DWORD dwTime);
/*******************************************************************************
* 设置位域标志:idFlag为位域标志对象标识,cwFlag用于说明所发送位域,wdMode为 *
* 发送模式,必须为FLAG_SET 或 FLAG_CLR其中之一; *
* *
* 成功后返回TSC_SUCCESS 或 FLAG_GET_ONE_MET。 *
* *
* 此函数可从中断中调用。 *
*/
extern CWORD _cdecl_ SendFlag(CWORD idFlag, CWORD cwFlag, CWORD wdMode);
/*
*******************************************************************************
* 对象删除相关函数 *
*******************************************************************************
*/
/* 删除对象:idObj为所对象标识,成功后返回TSC_SUCCESS */
extern CWORD _cdecl_ DeleteObject(CWORD idObj);
extern void _cdecl_ TerminateTask(CWORD idObj);
/*
*******************************************************************************
* 中断设置相关函数 *
*******************************************************************************
*/
typedef void (_cdecl_ * PISR)(void *);
/* 设置中断处理过程:
* cwIndex 说明硬件中断向量号,
* pISRAddr 说明中断处理函数地址,
* pISRArg 存放中断处理函数参数,可设为空指针,
* ppOldISRAddr 用于接受旧的中断处理函数地址,可设为空指针,
* ppOldISRArg 用于接受旧的中断处理函数参数,可设为空指针
*/
extern CBOOL _cdecl_ SetVector(CWORD cwIndex, PISR pISRAddr, void *pISRArg,
PISR *ppOldISRAddr, void **ppOldISRArg);
/* 8259芯片中断使能函数:Irq说明8259芯片中中断向量号,范围为:0~15。*/
extern CWORD _cdecl_ EnableVector(CWORD Irq);
/* 8259芯片中断关闭函数:Irq说明8259芯片中中断向量号,范围为:0~15。*/
extern CWORD _cdecl_ DisableVector(CWORD Irq);
/*
*******************************************************************************
* 内存分配相关函数 *
*******************************************************************************
*/
/* 分配 Size 字节内存,ppMem 为指针的指针,所分配内存地址存放到 *ppMem 中,
* 成功后,返回值为TSC_SUCCESS。
*/
extern CBOOL _cdecl_ Malloc(void **ppMem, size_t Size);
/*
#if !defined(void_Alloc)
#define void_Alloc
static void *Alloc(size_t Size)
{
void *pMem;
CBOOL alloc;
alloc = Malloc(&pMem, Size);
return ((alloc == true) ? pMem : NULL);
}
#endif
*/
/* 释放 pMem 所指内存块, 成功后,返回值为TSC_SUCCESS。 */
extern CBOOL _cdecl_ Free(void *pMem);
/*
*******************************************************************************
* 定时器相关函数 *
*******************************************************************************
*/
/* 创建定时器对象:
* pTimerName:说明定时器对象名称,
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -