From: gaojian <ga...@si...> - 2003-02-25 03:13:52
|
Hi, good morning everybody. Now I want Zaurus SL-C700 to receive data from Nokia 8210, I wrote a test program. The following is a part of my test code. obex_t *g_pHandle = NULL; volatile int g_iFinished = FALSE; void obexEvent(obex_t *a_pHandle, obex_object_t *a_pObject, int a_iMode, int a_iEvent, int a_iObexCmd, int a_iObexRsp) { switch (a_iEvent) { case OBEX_EV_PROGRESS: printf("."); break; case OBEX_EV_REQDONE: printf("\n"); /* Comes when a command has finished. */ if(a_iMode == OBEX_CLIENT){ clientDone(a_pObject, a_iObexCmd, a_iObexRsp); } else{ serverDone(a_pObject, a_iObexCmd); } break; case OBEX_EV_REQHINT: /* Comes BEFORE the lib parses anything. */ switch(a_iObexCmd) { case OBEX_CMD_PUT: case OBEX_CMD_CONNECT: case OBEX_CMD_DISCONNECT: OBEX_ObjectSetRsp(a_pObject, OBEX_RSP_CONTINUE, OBEX_RSP_SUCCESS); break; default: OBEX_ObjectSetRsp(a_pObject, OBEX_RSP_NOT_IMPLEMENTED, OBEX_RSP_NOT_IMPLEMENTED); break; } break; case OBEX_EV_REQ: /* Comes when a server-request has been received. */ serverRequest(a_pObject, a_iEvent, a_iObexCmd); break; case OBEX_EV_LINKERR: printf("Link broken (this does not have to be an error)!\n"); g_iFinished = 1; break; default: printf("Unknown event!\n"); break; } } void main(int argc, char *argv[]) { obex_object_t *pObject; g_pHandle = OBEX_Init(OBEX_TRANS_IRDA, obexEvent, 0); IrOBEX_ServerRegister(g_pHandle, "OBEX:IrXfer"); while (!g_iFinished){ OBEX_HandleInput(g_pHandle, 1); } return; } The test program cannot receive any data, because Zaurus SL-C700 has its own receive program named irrecv, and whatever I start it or not , data always be received by it. Now in main function , when I use IrOBEX_ServerRegister to start listening for incoming connections, if I pass "OBEX" to the second parameter of IrOBEX_ServerRegister to bind the OBEX service, my test program can receive data from Nokia 8210, but the OBEX_EV_LINKERR always happen. Now I have some questions: When I bind the OBEX:IrXfer service, why does my test program always receive no data? And when I bind the OBEX service, why does the OBEX_EV_LINKERR event always happen? What's the difference between OBEX and OBEX:IrXfer? When should I use OBEX , OBEX:IrXfer or IrXfer to bind a service? Can anyone tell me? Thankx koukenn |