int xio_exec_req(const struct node_id *nid, struct sd_req *hdr, void *data, bool (*need_retry)(uint32_t epoch), uint32_t epoch, uint32_t max_count) { struct xio_context *ctx = xio_context_create(NULL, 0, -1); struct client_data cli = { .ctx = ctx }; struct xio_connection *conn = sd_xio_create_connection(ctx, nid, &cli); struct xio_msg xreq; struct sd_rsp rsp; sd_assert(!is_main_thread()); memset(&rsp, 0, sizeof(rsp)); memset(&xreq, 0, sizeof(xreq)); client_msg_vec_init(&xreq); memset(&rsp, 0, sizeof(rsp)); msg_prep_for_send(hdr, &rsp, data, &xreq); xio_send_request(conn, &xreq); xio_context_run_loop(ctx, XIO_INFINITE); msg_finalize(hdr, data, cli.rsp); xio_connection_destroy(conn); xio_context_destroy(ctx); return 0; }
/*void initialize(void){ devmng_initialize(); inertial_initialize(); //通信関連機能の初期化 pVMC=com_createVMC1(); vmc1_initialize(pVMC,(const unsigned char*)("hmr"),(const unsigned char*)("ctr")); com_initialize(); msg_initialize(); rs_fputc('C',Stream_VMC); rs_fputc('m',Stream_VMC); rs_fputc(0x0d,Stream_VMC); rs_fputc(0x0a,Stream_VMC); sprite_power(1); sprite_initialize(); set_interrupt_fputflag(Stream_VMC);//割り込み予約 enable_interrupt_fget(Stream_VMC); enable_interrupt_fput(Stream_VMC); }*/ void finalize(void){ //カメラの終端化処理 sprite_finalize(); inertial_finalize(); //タスク機能の終端化処理 // task_finalize(); //通信関連の終端化処理 msg_finalize(); vmc1_finalize(pVMC); com_finalize(); com_releaseVMC1(pVMC); }