ETC——001

来源:互联网 发布:网络招人的技巧 编辑:程序博客网 时间:2024/05/29 10:58

 

 

Dsrc.c 是重要的领头文件,其中的函数dsrc_start首当其冲.

 

 

 

gboolean

dsrc_start(DSRC_t *dsrc)的参数

 

介是一个很重要的数据结构

struct _DSRC_t {

  int listenfd;

  int sockfd;

  GThread *work_thread;

  int cmd[2];

 

  gboolean started;

  gboolean connected;

  GHashTable *elements;

  gboolean set_stamped;

  char trx_ip[16];

  unsigned short port;

  GModule *dsrc_plugin_handle;

 

  dsrc_on_thread_init thread_init_func;

  dsrc_on_thread_destroy thread_destroy_func;

 

  dsrc_on_recv_data recv_data_func;

  dsrc_on_send_data send_data_func;

  dsrc_on_connect connect_func;

  dsrc_on_disconnect disconnect_func;

 

  dsrc_on_life_message life_message_func;

  dsrc_on_vst vst_func;

  dsrc_on_get_stamped get_stamped_func;

  dsrc_on_set_stamped set_stamped_func;

  dsrc_on_set_resp set_resp_func;

  dsrc_on_trans_end trans_end_func;

 

  dsrc_get_accr_func_t get_accr_func;

}; 其中定义的函数之中有重要作用

 

 

 

dsrc_start完成了建立监听绑定套接字listenfd,然后  dsrc->work_thread = g_thread_create(dsrc_main_thread_func, dsrc, TRUE, NULL);

  dsrc->started = TRUE;调用dsrc_main_thread_func

 

 

 

 

 

 

原来 myetc C语言定义了定义了许多python可以调用的函数,在python脚本中,调用了myetc定义的c语言的函数,然后python脚本还会被myetc中的c语言函数所调用。

 

myetc 中的main.c是入口函数文件,main函数完成一些初始化的操作  (splash_display_action 这个函数是一个屏幕溅射窗口的实现函数)调用etc_main_win_show 建立etc主窗口,然后调用_python_init 通过

PyObject *func = etc_sys_get_python_object("etc_init"); 调用etc_callback.py中定义的etc_init 来初始化

 

在sys_wrapper.c文件中定义了

static PyObject * wrap_sys_dsrc_start(PyObject *self, PyObject *args)这个函数调用了etc_sys.c中的etc_sys_dsrc_start函数,这个函数如下

 

int etc_sys_dsrc_start(etc_config_t *config, gboolean set_stamped)

{

  if (dsrc == NULL)

    dsrc = dsrc_init(config->dsrc_lib, config->trax_ip, config->dsrc_port,

    set_stamped);   //此处config->dsrc_lib 会对应该调用的天线库进行选择

 

  dsrc_thread_init_callback(dsrc, _dsrc_on_thread_init);

  dsrc_thread_destroy_callback(dsrc, _dsrc_on_thread_destroy);

 

  dsrc_recv_data_callback(dsrc, _dsrc_on_recv_data);

  dsrc_send_data_callback(dsrc, _dsrc_on_send_data);

  dsrc_connect_callback(dsrc, _dsrc_on_connect);

  dsrc_disconnect_callback(dsrc, _dsrc_on_disconnect);

 

  dsrc_life_message_callback(dsrc, _dsrc_on_life_message);

  dsrc_vst_callback(dsrc, _dsrc_on_vst);

  dsrc_get_stamped_callback(dsrc, _dsrc_on_get_stamped);

  dsrc_set_stamped_callback(dsrc, _dsrc_on_set_stamped);

  dsrc_set_resp_callback(dsrc, _dsrc_on_set_resp);

  dsrc_trans_end_callback(dsrc, _dsrc_on_trans_end);

 

  return dsrc_start(dsrc) ? 0 : -1;  然后调用dsrc.c文件中的dsrc_start,启动天线

}

在sys_wrapper.c    wrap_sys_dsrc_start 被包装成   {"dsrc_start", wrap_sys_dsrc_start, METH_VARARGS, "Start DSRC service"},

 

 

 

原创粉丝点击