char * smartpen_get_peninfo (obex_t *handle) { char *name = "peninfo"; int len; return get_named_object(handle, name, &len); }
char *smartpen_get_changelist(obex_t *handle, int starttime) { char name[256]; int len; snprintf(name, sizeof(name), "changelist?start_time=%d", starttime); return get_named_object(handle, name, &len); }
int smartpen_get_penletlist (obex_t *handle, FILE *out) { char *name = "penletlist"; char *buf; int len; buf = get_named_object(handle, name, &len); fwrite(buf, len, 1, out); return 1; }
int smartpen_get_paperreplay (obex_t *handle, FILE *out, long long int start_time) { char name[256]; char *buf; int len; snprintf(name, sizeof(name), "lspdata?name=com.livescribe.paperreplay.PaperReplay&start_time=%lld&returnVersion=0.3&remoteCaller=WIN_LD_200", start_time); buf = get_named_object(handle, name, &len); fwrite(buf, len, 1, out); return 1; }
int smartpen_get_guid (obex_t *handle, FILE *out, char *guid, long long int start_time) { char name[256]; char *buf; int len; snprintf(name, sizeof(name), "lspdata?name=%s&start_time=%lld", guid, start_time); buf = get_named_object(handle, name, &len); fwrite(buf, len, 1, out); return len; }
void cb_get_nameless_object(void *handle) { dpl_async_task_t *atask = (dpl_async_task_t *) handle; int i; dpl_dict_var_t *metadatum = NULL; if (DPL_SUCCESS != atask->ret) { fprintf(stderr, "dpl_get failed: %s (%d)\n", dpl_status_str(atask->ret), atask->ret); exit(1); } printf("data:\n"); write(1, dpl_buf_ptr(atask->u.get.buf), MIN(dpl_buf_size(atask->u.get.buf), 10)); printf("...\nmetadata:\n"); dpl_dict_print(atask->u.get.metadata, stdout, 0); dpl_async_task_free(atask); get_named_object(); }
obex_t *smartpen_connect(short vendor, short product) { obex_t *handle; obex_object_t *obj; int rc, num, i; struct obex_state *state; obex_interface_t *obex_intf; obex_headerdata_t hd; int size, count; char *buf; again: handle = OBEX_Init(OBEX_TRANS_USB, obex_event, 0); if (!handle) goto out; num = OBEX_EnumerateInterfaces(handle); for (i=0; i<num; i++) { obex_intf = OBEX_GetInterfaceByIndex(handle, i); if (!strcmp(obex_intf->usb.manufacturer, "Livescribe")) break; } if (i == num) { printf("No such device\n"); handle = NULL; goto out; } state = malloc(sizeof(struct obex_state)); if (!state) { handle = NULL; goto out; } memset(state, 0, sizeof(struct obex_state)); if (!swizzle_usb(vendor, product)) { handle = NULL; goto out; } rc = OBEX_InterfaceConnect(handle, obex_intf); if (rc < 0) { printf("Connect failed %d\n", rc); handle = NULL; goto out; } OBEX_SetUserData(handle, state); OBEX_SetTransportMTU(handle, 0x400, 0x400); obj = OBEX_ObjectNew(handle, OBEX_CMD_CONNECT); hd.bs = (unsigned char *)"LivescribeService"; size = strlen((char*)hd.bs)+1; OBEX_ObjectAddHeader(handle, obj, OBEX_HDR_TARGET, hd, size, 0); rc = OBEX_Request(handle, obj); count = state->req_done; while (rc == 0 && state->req_done <= count) { OBEX_HandleInput(handle, 100); } if (rc < 0 || !state->got_connid) { printf("Retry connection...\n"); OBEX_Cleanup(handle); goto again; } buf = get_named_object(handle, "ppdata?key=pp0000", &rc); if (!buf) { printf("Retry connection...\n"); OBEX_Cleanup(handle); pen_reset(vendor, product); goto again; } out: return handle; }