适配多模块驱动

#include<stdio.h>

typedef enum moudule_id_tag
{
	MODULE_A = 0x1000,
	MODULE_B = 0x1001,
	
}module_id_t;

/* type define*/
typedef void(*func1_call_api_t)(void);
typedef void(*func2_call_api_t)(void); 
typedef void(*func3_call_api_t)(void);

typedef struct demo_module_init_tag
{
	func1_call_api_t func1_call_api;
	func2_call_api_t func2_call_api;
	func3_call_api_t func3_call_api;
	 
}demo_module_init_t;

demo_module_init_t g_fp_demo_module_init;

/* func define */
void module_a_fun1_proc(void){
	
	printf("module_a_fun1_proc!!!\n");
}

/* module A proc api */
void module_a_fun2_proc(void){
	
	printf("module_a_fun2_proc!!!\n");
} 

void module_a_fun3_proc(void){
	
	printf("module_a_fun3_proc!!!\n");
} 

/* module B proc api */
void module_b_fun1_proc(void){
	
	printf("module_b_fun1_proc!!!\n");
} 


void module_b_fun2_proc(void){
	
	printf("module_b_fun2_proc!!!\n");
} 

void module_b_fun3_proc(void){
	
	printf("module_b_fun3_proc!!!\n");
} 


/* init module */
void mudule_init(module_id_t module_id){
	
	switch(module_id)
	{
		case MODULE_A:
			
			g_fp_demo_module_init.func1_call_api = module_a_fun1_proc;
			g_fp_demo_module_init.func2_call_api = module_a_fun2_proc;
			g_fp_demo_module_init.func3_call_api = module_a_fun3_proc;
		
			break;
		
		case MODULE_B:
			
			g_fp_demo_module_init.func1_call_api = module_b_fun1_proc;
			g_fp_demo_module_init.func2_call_api = module_b_fun2_proc;
			g_fp_demo_module_init.func3_call_api = module_b_fun3_proc;
		
			break;
		
		default:
			
			printf("error module id,please check!!!");
			break;
	}
	
}


void main(){
	
	module_id_t module_id = MODULE_B;
	
	mudule_init(module_id);
	
	g_fp_demo_module_init.func1_call_api();
	g_fp_demo_module_init.func2_call_api();
	g_fp_demo_module_init.func3_call_api();
	
	return;

} 

 

gtm900软件串口工具ModemDemo-V1.0.3-080117.exe 本次版本较 1.0.2tmp 20071128 做了以下修改: 1、修正了在 AT命令页 中无法编辑AT 命令发送长度为512字节的数据。 2、在AT命令页中增加了 “执行次数” 输入栏,用户可指定需要重复执行AT命令的次数。 本次版本较 V1.0.2 正式版本累积修改如下: 1、修正了在 AT命令页 中无法编辑AT 命令发送长度为512字节的数据。 2、在AT命令页中增加了 “执行次数” 输入栏,用户可指定需要重复执行AT命令的次数。 3、修改了初始化的策略,原来的策略下 即使发送 AT 测试命令不成功也会继续发送后续的读取模块信息等命令。新的初始化策略下,如果AT测试命令失败 则不会继续发送后续的读取模块信息等命令。 4、AT命令页 每条AT命令执行可单独指定间隔时间,例如可输入以下脚本来执行: AT::100 //该命令执行完后间隔100ms再执行下条命令 atd1245;::20000 ath //不指定间隔时间,使用AT命令页配置的缺省间隔时间 at::10 at::1232423 …… 5、日志输出时间与日志内容同行,每次输出日志以\r\n 为一个单位。 6、修正了 使用CM320模块时先运行SSCOM ,后运行本软件串口无法接收到数据的缺陷。 7、应叶学要求,修改了原来的需求:在“开启模块”操作中不直接对模块进行初始化操作,改由用户使用 “初始化”操作来触发模块的初始化操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值