void ATcodec_Init_Library_Tree (ATcodec_Tree_t *tree, AT_CODEC_FUNCTIONS_PTRS *funcs) { VP_OS_ASSERT(funcs); VP_OS_ASSERT(funcs->open); VP_OS_ASSERT(funcs->read); VP_OS_ASSERT(funcs->enable); VP_OS_ASSERT(funcs->write); VP_OS_ASSERT(funcs->close); VP_OS_ASSERT(funcs->init); VP_OS_ASSERT(funcs->shutdown); ATcodec_Tree_init(tree, sizeof(ATcodec_Message_Data_t), 1); memcpy(&func_ptrs, funcs, sizeof(*funcs)); vp_os_mutex_init(&ATcodec_cond_mutex); vp_os_cond_init(&ATcodec_wait_cond, &ATcodec_cond_mutex); if(func_ptrs.init() != AT_CODEC_INIT_OK) { ATCODEC_PRINT("ATcodec Init error\n"); } else { ATcodec_Tree_print(tree); atcodec_lib_init_ok = 1; ATcodec_Message_len = 0; } }
/******************************************************************** * Static functions *******************************************************************/ AT_CODEC_ERROR_CODE host_init( void ) { if( func_ptrs.init != NULL ) func_ptrs.init(); # undef ATCODEC_DEFINE_AT_CMD # define ATCODEC_DEFINE_AT_CMD(ID,Str,From,Cb,Prio) \ if((ids.ID = ATcodec_Add_Defined_Message(Str)) == -1) \ { \ return AT_CODEC_INIT_ERROR; \ } # undef ATCODEC_DEFINE_AT_RESU # define ATCODEC_DEFINE_AT_RESU(ID,Str,From,Cb) \ if((ids.ID = ATcodec_Add_Hashed_Message(Str,ids.From,Cb,0)) == -1) \ { \ return AT_CODEC_INIT_ERROR; \ } # include <at_msgs.h> return AT_CODEC_INIT_OK; }