* To enablue DID in coming bluez release @ 2008-12-12 1:52 Li, Zhigang 2008-12-12 1:55 ` Marcel Holtmann 0 siblings, 1 reply; 12+ messages in thread From: Li, Zhigang @ 2008-12-12 1:52 UTC (permalink / raw) To: linux-bluetooth@vger.kernel.org Hi all, Could you please enable this profile in the coming release? To update: Add VID,PID,VER setting in main.conf I think the parse_config also need add code in order to parse these value to main_opt.did. Thanks Zhigang ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: To enablue DID in coming bluez release 2008-12-12 1:52 To enablue DID in coming bluez release Li, Zhigang @ 2008-12-12 1:55 ` Marcel Holtmann 2008-12-16 7:55 ` Li, Zhigang 0 siblings, 1 reply; 12+ messages in thread From: Marcel Holtmann @ 2008-12-12 1:55 UTC (permalink / raw) To: Li, Zhigang; +Cc: linux-bluetooth@vger.kernel.org Hi Zhigang, > Could you please enable this profile in the coming release? > To update: > Add VID,PID,VER setting in main.conf > > I think the parse_config also need add code in order to parse these value to main_opt.did. I was expecting that you send me a patch for it. Regards Marcel ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: To enablue DID in coming bluez release 2008-12-12 1:55 ` Marcel Holtmann @ 2008-12-16 7:55 ` Li, Zhigang 2008-12-16 9:59 ` Li, Zhigang 0 siblings, 1 reply; 12+ messages in thread From: Li, Zhigang @ 2008-12-16 7:55 UTC (permalink / raw) To: Marcel Holtmann; +Cc: linux-bluetooth@vger.kernel.org [-- Attachment #1: Type: text/plain, Size: 680 bytes --] Please see the attached The patch is validated in my pc with 4.18 version and works fine. If it's ok for you please merge it into upstream. Thanks -----Original Message----- From: Marcel Holtmann [mailto:marcel@holtmann.org] Sent: 2008年12月12日 9:56 To: Li, Zhigang Cc: linux-bluetooth@vger.kernel.org Subject: Re: To enablue DID in coming bluez release Hi Zhigang, > Could you please enable this profile in the coming release? > To update: > Add VID,PID,VER setting in main.conf > > I think the parse_config also need add code in order to parse these value to main_opt.did. I was expecting that you send me a patch for it. Regards Marcel [-- Attachment #2: main.conf --] [-- Type: application/octet-stream, Size: 1090 bytes --] [General] # List of plugins that should not be loaded on bluetoothd startup #DisablePlugins = network,input # Default adaper name # %h - substituted for hostname # %d - substituted for adapter id Name = %h-%d # Default device class. Only the major and minor device class bits are # considered Class = 0x000100 # How long to stay in discoverable mode before going back to non-discoverable # The value is in seconds. Default is 180, i.e. 3 minutes. # 0 = disable timer, i.e. stay discoverable forever DiscoverableTimeout = 0 # Use some other page timeout than the controller default one # (16384 = 10 seconds) PageTimeout = 8192 # Behaviour for Adapter.SetProperty("mode", "off") # Possible values: "DevDown", "NoScan" (default) OffMode = NoScan # Discover scheduler interval used in Adapter.DiscoverDevices # The value is in seconds. Defaults is 0 to use controller scheduler DiscoverSchedulerInterval = 0 # User verndor and product and version information are used in DID profile # ":" to identify the value. FFFF is reserved for VendorId by default. VID/PID/VER = 1234:5678:abcd [-- Attachment #3: main.c --] [-- Type: text/plain, Size: 17224 bytes --] /* * * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2000-2001 Qualcomm Incorporated * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com> * Copyright (C) 2002-2008 Marcel Holtmann <marcel@holtmann.org> * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <stdio.h> #include <errno.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <signal.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/wait.h> #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> #include <glib.h> #include <dbus/dbus.h> #include "logging.h" #include "hcid.h" #include "sdpd.h" #include "adapter.h" #include "dbus-hci.h" #include "dbus-common.h" #include "agent.h" #include "manager.h" #include "storage.h" #define HCID_DEFAULT_DISCOVERABLE_TIMEOUT 180 /* 3 minutes */ enum { HCID_SET_NAME, HCID_SET_CLASS, HCID_SET_PAGETO, HCID_SET_DISCOVTO, }; struct main_opts main_opts; static int child_pipe[2]; static GKeyFile *load_config(const char *file) { GError *err = NULL; GKeyFile *keyfile; keyfile = g_key_file_new(); g_key_file_set_list_separator(keyfile, ','); if (!g_key_file_load_from_file(keyfile, file, 0, &err)) { error("Parsing %s failed: %s", file, err->message); g_error_free(err); g_key_file_free(keyfile); return NULL; } return keyfile; } static void parse_config(GKeyFile *config) { GError *err = NULL; char *str; int val; if (!config) return; debug("parsing main.conf"); str = g_key_file_get_string(config, "General", "OffMode", &err); if (err) { debug("%s", err->message); g_clear_error(&err); } else { debug("offmode=%s", str); if (g_str_equal(str, "DevDown")) main_opts.offmode = HCID_OFFMODE_DEVDOWN; g_free(str); } val = g_key_file_get_integer(config, "General", "DiscoverableTimeout", &err); if (err) { debug("%s", err->message); g_clear_error(&err); } else { debug("discovto=%d", val); main_opts.discovto = val; main_opts.flags |= 1 << HCID_SET_DISCOVTO; } val = g_key_file_get_integer(config, "General", "PageTimeout", &err); if (err) { debug("%s", err->message); g_clear_error(&err); } else { debug("pageto=%d", val); main_opts.pageto = val; main_opts.flags |= 1 << HCID_SET_PAGETO; } str = g_key_file_get_string(config, "General", "Name", &err); if (err) { debug("%s", err->message); g_clear_error(&err); } else { debug("name=%s", str); g_free(main_opts.name); main_opts.name = g_strdup(str); main_opts.flags |= 1 << HCID_SET_NAME; g_free(str); } str = g_key_file_get_string(config, "General", "Class", &err); if (err) { debug("%s", err->message); g_clear_error(&err); } else { debug("class=%s", str); main_opts.class = strtol(str, NULL, 16); main_opts.flags |= 1 << HCID_SET_CLASS; g_free(str); } val = g_key_file_get_integer(config, "General", "DiscoverSchedulerInterval", &err); if (err) { debug("%s", err->message); g_clear_error(&err); } else { debug("inqmode=%d", val); main_opts.inqmode = val; } str = g_key_file_get_string(config, "General", "VID/PID/VER", &err); if (err) { debug("%s", err->message); g_clear_error(&err); } else { debug("vid/pid/ver=%s", str); strcpy( main_opts.deviceid,str); g_free(str); } main_opts.link_mode = HCI_LM_ACCEPT; main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF | HCI_LP_HOLD | HCI_LP_PARK; } static void update_service_classes(const bdaddr_t *bdaddr, uint8_t value) { struct hci_dev_list_req *dl; struct hci_dev_req *dr; int i, sk; sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI); if (sk < 0) return; dl = g_malloc0(HCI_MAX_DEV * sizeof(*dr) + sizeof(*dl)); dl->dev_num = HCI_MAX_DEV; dr = dl->dev_req; if (ioctl(sk, HCIGETDEVLIST, dl) < 0) { close(sk); g_free(dl); return; } dr = dl->dev_req; for (i = 0; i < dl->dev_num; i++, dr++) { struct hci_dev_info di; uint8_t cls[3]; int dd; if (hci_devinfo(dr->dev_id, &di) < 0) continue; if (hci_test_bit(HCI_RAW, &di.flags)) continue; if (!hci_test_bit(HCI_UP, &di.flags)) continue; if (manager_get_adapter_class(di.dev_id, cls) < 0) continue; dd = hci_open_dev(di.dev_id); if (dd < 0) continue; set_service_classes(dd, cls, value); hci_close_dev(dd); manager_update_adapter(di.dev_id); } g_free(dl); close(sk); } /* * Device name expansion * %d - device id */ static char *expand_name(char *dst, int size, char *str, int dev_id) { register int sp, np, olen; char *opt, buf[10]; if (!str && !dst) return NULL; sp = np = 0; while (np < size - 1 && str[sp]) { switch (str[sp]) { case '%': opt = NULL; switch (str[sp+1]) { case 'd': sprintf(buf, "%d", dev_id); opt = buf; break; case 'h': opt = main_opts.host_name; break; case '%': dst[np++] = str[sp++]; /* fall through */ default: sp++; continue; } if (opt) { /* substitute */ olen = strlen(opt); if (np + olen < size - 1) memcpy(dst + np, opt, olen); np += olen; } sp += 2; continue; case '\\': sp++; /* fall through */ default: dst[np++] = str[sp++]; break; } } dst[np] = '\0'; return dst; } static gboolean child_exit(GIOChannel *io, GIOCondition cond, void *user_data) { int status, fd = g_io_channel_unix_get_fd(io); pid_t child_pid; if (read(fd, &child_pid, sizeof(child_pid)) != sizeof(child_pid)) { error("child_exit: unable to read child pid from pipe"); return TRUE; } if (waitpid(child_pid, &status, 0) != child_pid) error("waitpid(%d) failed", child_pid); else debug("child %d exited", child_pid); return TRUE; } static void at_child_exit(void) { pid_t pid = getpid(); if (write(child_pipe[1], &pid, sizeof(pid)) != sizeof(pid)) error("unable to write to child pipe"); } static void configure_device(int dev_id) { struct hci_dev_info di; uint16_t policy; int dd; if (hci_devinfo(dev_id, &di) < 0) return; if (hci_test_bit(HCI_RAW, &di.flags)) return; dd = hci_open_dev(dev_id); if (dd < 0) { error("Can't open device hci%d: %s (%d)", dev_id, strerror(errno), errno); return; } /* Set device name */ if ((main_opts.flags & (1 << HCID_SET_NAME)) && main_opts.name) { change_local_name_cp cp; memset(cp.name, 0, sizeof(cp.name)); expand_name((char *) cp.name, sizeof(cp.name), main_opts.name, dev_id); hci_send_cmd(dd, OGF_HOST_CTL, OCF_CHANGE_LOCAL_NAME, CHANGE_LOCAL_NAME_CP_SIZE, &cp); } /* Set device class */ if ((main_opts.flags & (1 << HCID_SET_CLASS))) { write_class_of_dev_cp cp; uint32_t class; uint8_t cls[3]; if (read_local_class(&di.bdaddr, cls) < 0) { class = htobl(main_opts.class); cls[2] = get_service_classes(&di.bdaddr); memcpy(cp.dev_class, &class, 3); } else { if (!(main_opts.scan & SCAN_INQUIRY)) cls[1] &= 0xdf; /* Clear discoverable bit */ cls[2] = get_service_classes(&di.bdaddr); memcpy(cp.dev_class, cls, 3); } hci_send_cmd(dd, OGF_HOST_CTL, OCF_WRITE_CLASS_OF_DEV, WRITE_CLASS_OF_DEV_CP_SIZE, &cp); } /* Set page timeout */ if ((main_opts.flags & (1 << HCID_SET_PAGETO))) { write_page_timeout_cp cp; cp.timeout = htobs(main_opts.pageto); hci_send_cmd(dd, OGF_HOST_CTL, OCF_WRITE_PAGE_TIMEOUT, WRITE_PAGE_TIMEOUT_CP_SIZE, &cp); } /* Set default link policy */ policy = htobs(main_opts.link_policy); hci_send_cmd(dd, OGF_LINK_POLICY, OCF_WRITE_DEFAULT_LINK_POLICY, 2, &policy); } static void init_device(int dev_id) { struct hci_dev_req dr; struct hci_dev_info di; pid_t pid; int dd; /* Do initialization in the separate process */ pid = fork(); switch (pid) { case 0: atexit(at_child_exit); break; case -1: error("Fork failed. Can't init device hci%d: %s (%d)", dev_id, strerror(errno), errno); default: debug("child %d forked", pid); return; } dd = hci_open_dev(dev_id); if (dd < 0) { error("Can't open device hci%d: %s (%d)", dev_id, strerror(errno), errno); exit(1); } memset(&dr, 0, sizeof(dr)); dr.dev_id = dev_id; /* Set link mode */ dr.dev_opt = main_opts.link_mode; if (ioctl(dd, HCISETLINKMODE, (unsigned long) &dr) < 0) { error("Can't set link mode on hci%d: %s (%d)", dev_id, strerror(errno), errno); } /* Set link policy */ dr.dev_opt = main_opts.link_policy; if (ioctl(dd, HCISETLINKPOL, (unsigned long) &dr) < 0 && errno != ENETDOWN) { error("Can't set link policy on hci%d: %s (%d)", dev_id, strerror(errno), errno); } /* Start HCI device */ if (ioctl(dd, HCIDEVUP, dev_id) < 0 && errno != EALREADY) { error("Can't init device hci%d: %s (%d)", dev_id, strerror(errno), errno); goto fail; } if (hci_devinfo(dev_id, &di) < 0) goto fail; if (hci_test_bit(HCI_RAW, &di.flags)) goto done; done: hci_close_dev(dd); exit(0); fail: hci_close_dev(dd); exit(1); } static void device_devreg_setup(int dev_id) { struct hci_dev_info di; init_device(dev_id); if (hci_devinfo(dev_id, &di) < 0) return; if (!hci_test_bit(HCI_RAW, &di.flags)) manager_register_adapter(dev_id); } static void device_devup_setup(int dev_id) { configure_device(dev_id); manager_start_adapter(dev_id); start_security_manager(dev_id); } static void init_all_devices(int ctl) { struct hci_dev_list_req *dl; struct hci_dev_req *dr; int i; dl = g_try_malloc0(HCI_MAX_DEV * sizeof(struct hci_dev_req) + sizeof(uint16_t)); if (!dl) { info("Can't allocate devlist buffer: %s (%d)", strerror(errno), errno); exit(1); } dl->dev_num = HCI_MAX_DEV; dr = dl->dev_req; if (ioctl(ctl, HCIGETDEVLIST, (void *) dl) < 0) { info("Can't get device list: %s (%d)", strerror(errno), errno); exit(1); } for (i = 0; i < dl->dev_num; i++, dr++) { info("HCI dev %d registered", dr->dev_id); device_devreg_setup(dr->dev_id); if (hci_test_bit(HCI_UP, &dr->dev_opt)) { info("HCI dev %d already up", dr->dev_id); device_devup_setup(dr->dev_id); } } g_free(dl); } static void init_defaults(void) { /* Default HCId settings */ memset(&main_opts, 0, sizeof(main_opts)); main_opts.offmode = HCID_OFFMODE_NOSCAN; main_opts.scan = SCAN_PAGE; main_opts.mode = MODE_CONNECTABLE; main_opts.name = g_strdup("BlueZ"); main_opts.discovto = HCID_DEFAULT_DISCOVERABLE_TIMEOUT; if (gethostname(main_opts.host_name, sizeof(main_opts.host_name) - 1) < 0) strcpy(main_opts.host_name, "noname"); } static inline void device_event(GIOChannel *chan, evt_stack_internal *si) { evt_si_device *sd = (void *) &si->data; switch (sd->event) { case HCI_DEV_REG: info("HCI dev %d registered", sd->dev_id); device_devreg_setup(sd->dev_id); break; case HCI_DEV_UNREG: info("HCI dev %d unregistered", sd->dev_id); manager_unregister_adapter(sd->dev_id); break; case HCI_DEV_UP: info("HCI dev %d up", sd->dev_id); device_devup_setup(sd->dev_id); break; case HCI_DEV_DOWN: info("HCI dev %d down", sd->dev_id); manager_stop_adapter(sd->dev_id); stop_security_manager(sd->dev_id); break; } } static gboolean io_stack_event(GIOChannel *chan, GIOCondition cond, gpointer data) { unsigned char buf[HCI_MAX_FRAME_SIZE], *ptr; evt_stack_internal *si; hci_event_hdr *eh; int type; size_t len; GIOError err; ptr = buf; if ((err = g_io_channel_read(chan, (gchar *) buf, sizeof(buf), &len))) { if (err == G_IO_ERROR_AGAIN) return TRUE; error("Read from control socket failed: %s (%d)", strerror(errno), errno); return FALSE; } type = *ptr++; if (type != HCI_EVENT_PKT) return TRUE; eh = (hci_event_hdr *) ptr; if (eh->evt != EVT_STACK_INTERNAL) return TRUE; ptr += HCI_EVENT_HDR_SIZE; si = (evt_stack_internal *) ptr; switch (si->type) { case EVT_SI_DEVICE: device_event(chan, si); break; } return TRUE; } static GMainLoop *event_loop; static void sig_term(int sig) { g_main_loop_quit(event_loop); } static void sig_debug(int sig) { toggle_debug(); } static gboolean option_detach = TRUE; static gboolean option_debug = FALSE; static GOptionEntry options[] = { { "nodaemon", 'n', G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &option_detach, "Don't run as daemon in background" }, { "debug", 'd', 0, G_OPTION_ARG_NONE, &option_debug, "Enable debug information output" }, { NULL }, }; int main(int argc, char *argv[]) { GOptionContext *context; GError *err = NULL; struct sockaddr_hci addr; struct hci_filter flt; struct sigaction sa; GIOChannel *ctl_io, *child_io; uint16_t mtu = 0; GKeyFile *config; init_defaults(); context = g_option_context_new(NULL); g_option_context_add_main_entries(context, options, NULL); if (g_option_context_parse(context, &argc, &argv, &err) == FALSE) { if (err != NULL) { g_printerr("%s\n", err->message); g_error_free(err); } else g_printerr("An unknown error occurred\n"); exit(1); } g_option_context_free(context); if (option_detach == TRUE) { if (daemon(0, 0)) { perror("Can't start daemon"); exit(1); } } umask(0077); start_logging("bluetoothd", "Bluetooth daemon"); memset(&sa, 0, sizeof(sa)); sa.sa_flags = SA_NOCLDSTOP; sa.sa_handler = sig_term; sigaction(SIGTERM, &sa, NULL); sigaction(SIGINT, &sa, NULL); sa.sa_handler = sig_debug; sigaction(SIGUSR2, &sa, NULL); sa.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sa, NULL); if (option_debug == TRUE) { info("Enabling debug information"); enable_debug(); } /* Create and bind HCI socket */ if ((main_opts.sock = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) { error("Can't open HCI socket: %s (%d)", strerror(errno), errno); exit(1); } /* Set filter */ hci_filter_clear(&flt); hci_filter_set_ptype(HCI_EVENT_PKT, &flt); hci_filter_set_event(EVT_STACK_INTERNAL, &flt); if (setsockopt(main_opts.sock, SOL_HCI, HCI_FILTER, &flt, sizeof(flt)) < 0) { error("Can't set filter: %s (%d)", strerror(errno), errno); exit(1); } addr.hci_family = AF_BLUETOOTH; addr.hci_dev = HCI_DEV_NONE; if (bind(main_opts.sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) { error("Can't bind HCI socket: %s (%d)", strerror(errno), errno); exit(1); } config = load_config(CONFIGDIR "/main.conf"); parse_config(config); if (pipe(child_pipe) < 0) { error("pipe(): %s (%d)", strerror(errno), errno); exit(1); } child_io = g_io_channel_unix_new(child_pipe[0]); g_io_channel_set_close_on_unref(child_io, TRUE); g_io_add_watch(child_io, G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL, child_exit, NULL); g_io_channel_unref(child_io); agent_init(); if (hcid_dbus_init() < 0) { error("Unable to get on D-Bus"); exit(1); } start_sdp_server(mtu, main_opts.deviceid, SDP_SERVER_COMPAT); set_service_classes_callback(update_service_classes); /* Loading plugins has to be done after D-Bus has been setup since * the plugins might wanna expose some paths on the bus. However the * best order of how to init various subsystems of the Bluetooth * daemon needs to be re-worked. */ plugin_init(config); event_loop = g_main_loop_new(NULL, FALSE); ctl_io = g_io_channel_unix_new(main_opts.sock); g_io_channel_set_close_on_unref(ctl_io, TRUE); g_io_add_watch(ctl_io, G_IO_IN, io_stack_event, NULL); g_io_channel_unref(ctl_io); /* Initialize already connected devices */ init_all_devices(main_opts.sock); g_main_loop_run(event_loop); hcid_dbus_unregister(); plugin_cleanup(); stop_sdp_server(); agent_exit(); hcid_dbus_exit(); g_main_loop_unref(event_loop); if (config) g_key_file_free(config); info("Exit"); stop_logging(); return 0; } ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: To enablue DID in coming bluez release 2008-12-16 7:55 ` Li, Zhigang @ 2008-12-16 9:59 ` Li, Zhigang 2008-12-16 10:29 ` Johan Hedberg 0 siblings, 1 reply; 12+ messages in thread From: Li, Zhigang @ 2008-12-16 9:59 UTC (permalink / raw) To: Li, Zhigang, Marcel Holtmann; +Cc: linux-bluetooth@vger.kernel.org UmVzZW5kOg0KDQotLS0gYS9tYWluLmMJVHVlIERlYyAxNiAxNzo0MzoyNCAyMDA4ICswODAwDQor KysgYi9tYWluLmMJVHVlIERlYyAxNiAxNzo0NDo0MyAyMDA4ICswODAwDQpAQCAtMTczLDYgKzE3 MywxNiBAQCBzdGF0aWMgdm9pZCBwYXJzZV9jb25maWcoR0tleUZpbGUgKmNvbmZpDQogCQlkZWJ1 ZygiaW5xbW9kZT0lZCIsIHZhbCk7DQogCQltYWluX29wdHMuaW5xbW9kZSA9IHZhbDsNCiAJfQ0K KwlzdHIgPSBnX2tleV9maWxlX2dldF9zdHJpbmcoY29uZmlnLCAiR2VuZXJhbCIsDQorCQkJCQki VklEL1BJRC9WRVIiLCAmZXJyKTsNCisJaWYgKGVycikgew0KKwkJZGVidWcoIiVzIiwgZXJyLT5t ZXNzYWdlKTsNCisJCWdfY2xlYXJfZXJyb3IoJmVycik7DQorCX0gZWxzZSB7DQorCQlkZWJ1Zygi dmlkL3BpZC92ZXI9JXMiLCBzdHIpOw0KKwkJc3RyY3B5KCBtYWluX29wdHMuZGV2aWNlaWQsc3Ry KTsNCisJCWdfZnJlZShzdHIpOw0KKwl9DQogDQogCW1haW5fb3B0cy5saW5rX21vZGUgPSBIQ0lf TE1fQUNDRVBUOw0KDQotLS0gYS9tYWluLmNvbmYJVHVlIERlYyAxNiAxNzo0MzoyNCAyMDA4ICsw ODAwDQorKysgYi9tYWluLmNvbmYJVHVlIERlYyAxNiAxNzo1MDozMSAyMDA4ICswODAwDQpAQCAt MjgsMyArMjgsOSBAQCBPZmZNb2RlID0gTm9TY2FuDQogIyBEaXNjb3ZlciBzY2hlZHVsZXIgaW50 ZXJ2YWwgdXNlZCBpbiBBZGFwdGVyLkRpc2NvdmVyRGV2aWNlcw0KICMgVGhlIHZhbHVlIGlzIGlu IHNlY29uZHMuIERlZmF1bHRzIGlzIDAgdG8gdXNlIGNvbnRyb2xsZXIgc2NoZWR1bGVyDQogRGlz Y292ZXJTY2hlZHVsZXJJbnRlcnZhbCA9IDANCisNCisNCisjIFVzZXIgdmVybmRvciBhbmQgcHJv ZHVjdCBhbmQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhcmUgdXNlZCBpbiBESUQgcHJvZmlsZQ0KKyMg IjoiIHRvIGlkZW50aWZ5IHRoZSB2YWx1ZS4gRkZGRiBpcyByZXNlcnZlZCBmb3IgVmVuZG9ySWQg YnkgZGVmYXVsdC4NCitWSUQvUElEL1ZFUiA9IDEyMzQ6NTY3ODphYmNkDQorDQoNCg0KVGhhbmtz DQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGxpbnV4LWJsdWV0b290aC1v d25lckB2Z2VyLmtlcm5lbC5vcmcgW21haWx0bzpsaW51eC1ibHVldG9vdGgtb3duZXJAdmdlci5r ZXJuZWwub3JnXSBPbiBCZWhhbGYgT2YgTGksIFpoaWdhbmcNClNlbnQ6IDIwMDjE6jEy1MIxNsjV IDE1OjU2DQpUbzogTWFyY2VsIEhvbHRtYW5uDQpDYzogbGludXgtYmx1ZXRvb3RoQHZnZXIua2Vy bmVsLm9yZw0KU3ViamVjdDogUkU6IFRvIGVuYWJsdWUgRElEIGluIGNvbWluZyBibHVleiByZWxl YXNlDQoNClBsZWFzZSBzZWUgdGhlIGF0dGFjaGVkIA0KVGhlIHBhdGNoIGlzIHZhbGlkYXRlZCBp biBteSBwYyB3aXRoIDQuMTggdmVyc2lvbiBhbmQgd29ya3MgZmluZS4NCklmIGl0J3Mgb2sgZm9y IHlvdSBwbGVhc2UgbWVyZ2UgaXQgaW50byB1cHN0cmVhbS4NClRoYW5rcw0KDQoNCi0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBNYXJjZWwgSG9sdG1hbm4gW21haWx0bzptYXJjZWxA aG9sdG1hbm4ub3JnXSANClNlbnQ6IDIwMDjE6jEy1MIxMsjVIDk6NTYNClRvOiBMaSwgWmhpZ2Fu Zw0KQ2M6IGxpbnV4LWJsdWV0b290aEB2Z2VyLmtlcm5lbC5vcmcNClN1YmplY3Q6IFJlOiBUbyBl bmFibHVlIERJRCBpbiBjb21pbmcgYmx1ZXogcmVsZWFzZQ0KDQpIaSBaaGlnYW5nLA0KDQo+IENv dWxkIHlvdSBwbGVhc2UgZW5hYmxlIHRoaXMgcHJvZmlsZSBpbiB0aGUgY29taW5nIHJlbGVhc2U/ DQo+IFRvIHVwZGF0ZToNCj4gQWRkIFZJRCxQSUQsVkVSIHNldHRpbmcgaW4gbWFpbi5jb25mDQo+ IA0KPiBJIHRoaW5rIHRoZSBwYXJzZV9jb25maWcgYWxzbyBuZWVkIGFkZCBjb2RlIGluIG9yZGVy IHRvIHBhcnNlIHRoZXNlIHZhbHVlIHRvIG1haW5fb3B0LmRpZC4NCg0KSSB3YXMgZXhwZWN0aW5n IHRoYXQgeW91IHNlbmQgbWUgYSBwYXRjaCBmb3IgaXQuDQoNClJlZ2FyZHMNCg0KTWFyY2VsDQoN Cg0K ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: To enablue DID in coming bluez release 2008-12-16 9:59 ` Li, Zhigang @ 2008-12-16 10:29 ` Johan Hedberg 2008-12-17 2:17 ` Li, Zhigang 2008-12-17 2:38 ` Marcel Holtmann 0 siblings, 2 replies; 12+ messages in thread From: Johan Hedberg @ 2008-12-16 10:29 UTC (permalink / raw) To: linux-bluetooth@vger.kernel.org Hi, Couple of comments: On Tue, Dec 16, 2008, Li, Zhigang wrote: > main_opts.inqmode = val; > } > + str = g_key_file_get_string(config, "General", Coding style: add empty line after the closing bracket. > + "VID/PID/VER", &err); Did you agree with this "VID/PID/VER" name with Marcel? I'd have used something like "DeviceID", "DeviceIDInfo" or "DIDInfo". > + strcpy( main_opts.deviceid,str); First, coding style: remove the extra space after the opening parenthesis and add the missing one after the comma. Second, you're overflowing main_opts.deviceid if the string provided in main.conf is longer than 14 characters. So the call should be: strncpy(main_opts.deviceid, src, sizeof(main_opts.deviceid)); Johan ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: To enablue DID in coming bluez release 2008-12-16 10:29 ` Johan Hedberg @ 2008-12-17 2:17 ` Li, Zhigang 2008-12-17 2:25 ` David Sainty 2008-12-17 2:38 ` Marcel Holtmann 1 sibling, 1 reply; 12+ messages in thread From: Li, Zhigang @ 2008-12-17 2:17 UTC (permalink / raw) To: Johan Hedberg, linux-bluetooth@vger.kernel.org UGxlYXNlIGNoZWNrIGl0IGFnYWluLg0KTWFyY2VsIG1lbnRpb24gaXQgaW4gSVJDIGZvciBWSUQv UElEL1ZFUg0KDQotLS0gYS9tYWluLmMJVHVlIERlYyAxNiAxNzo0MzoyNCAyMDA4ICswODAwDQor KysgYi9tYWluLmMJV2VkIERlYyAxNyAwOTo1NzozNyAyMDA4ICswODAwDQpAQCAtMTc0LDYgKzE3 NCwxNyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9jb25maWcoR0tleUZpbGUgKmNvbmZpDQogCQltYWlu X29wdHMuaW5xbW9kZSA9IHZhbDsNCiAJfQ0KIA0KKwlzdHIgPSBnX2tleV9maWxlX2dldF9zdHJp bmcoY29uZmlnLCAiR2VuZXJhbCIsDQorCQkJCQkiVklEL1BJRC9WRVIiLCAmZXJyKTsNCisJaWYg KGVycikgew0KKwkJZGVidWcoIiVzIiwgZXJyLT5tZXNzYWdlKTsNCisJCWdfY2xlYXJfZXJyb3Io JmVycik7DQorCX0gZWxzZSB7DQorCQlkZWJ1ZygidmlkL3BpZC92ZXI9JXMiLCBzdHIpOw0KKwkJ c3RybmNweShtYWluX29wdHMuZGV2aWNlaWQsIHN0ciwgc2l6ZW9mKG1haW5fb3B0cy5kZXZpY2Vp ZCkpOw0KKwkJZ19mcmVlKHN0cik7DQorCX0NCisNCiAJbWFpbl9vcHRzLmxpbmtfbW9kZSA9IEhD SV9MTV9BQ0NFUFQ7DQogDQogCW1haW5fb3B0cy5saW5rX3BvbGljeSA9IEhDSV9MUF9SU1dJVENI IHwgSENJX0xQX1NOSUZGIHwNCmRpZmYgLXIgNjU1NTY1MDI5MTFkIG1haW4uY29uZg0KLS0tIGEv bWFpbi5jb25mCVR1ZSBEZWMgMTYgMTc6NDM6MjQgMjAwOCArMDgwMA0KKysrIGIvbWFpbi5jb25m CVR1ZSBEZWMgMTYgMTc6NTA6MzEgMjAwOCArMDgwMA0KQEAgLTI4LDMgKzI4LDkgQEAgT2ZmTW9k ZSA9IE5vU2Nhbg0KICMgRGlzY292ZXIgc2NoZWR1bGVyIGludGVydmFsIHVzZWQgaW4gQWRhcHRl ci5EaXNjb3ZlckRldmljZXMNCiAjIFRoZSB2YWx1ZSBpcyBpbiBzZWNvbmRzLiBEZWZhdWx0cyBp cyAwIHRvIHVzZSBjb250cm9sbGVyIHNjaGVkdWxlcg0KIERpc2NvdmVyU2NoZWR1bGVySW50ZXJ2 YWwgPSAwDQorDQorDQorIyBVc2VyIHZlcm5kb3IgYW5kIHByb2R1Y3QgYW5kIHZlcnNpb24gaW5m b3JtYXRpb24gYXJlIHVzZWQgaW4gRElEIHByb2ZpbGUNCisjICI6IiB0byBpZGVudGlmeSB0aGUg dmFsdWUuIEZGRkYgaXMgcmVzZXJ2ZWQgZm9yIFZlbmRvcklkIGJ5IGRlZmF1bHQuDQorVklEL1BJ RC9WRVIgPSAxMjM0OjU2Nzg6YWJjZA0KKw0KDQpUaGFua3MNCg0KLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCkZyb206IGxpbnV4LWJsdWV0b290aC1vd25lckB2Z2VyLmtlcm5lbC5vcmcgW21h aWx0bzpsaW51eC1ibHVldG9vdGgtb3duZXJAdmdlci5rZXJuZWwub3JnXSBPbiBCZWhhbGYgT2Yg Sm9oYW4gSGVkYmVyZw0KU2VudDogMjAwOMTqMTLUwjE2yNUgMTg6MjkNClRvOiBsaW51eC1ibHVl dG9vdGhAdmdlci5rZXJuZWwub3JnDQpTdWJqZWN0OiBSZTogVG8gZW5hYmx1ZSBESUQgaW4gY29t aW5nIGJsdWV6IHJlbGVhc2UNCg0KSGksDQoNCkNvdXBsZSBvZiBjb21tZW50czoNCg0KT24gVHVl LCBEZWMgMTYsIDIwMDgsIExpLCBaaGlnYW5nIHdyb3RlOg0KPiAgCQltYWluX29wdHMuaW5xbW9k ZSA9IHZhbDsNCj4gIAl9DQo+ICsJc3RyID0gZ19rZXlfZmlsZV9nZXRfc3RyaW5nKGNvbmZpZywg IkdlbmVyYWwiLA0KDQpDb2Rpbmcgc3R5bGU6IGFkZCBlbXB0eSBsaW5lIGFmdGVyIHRoZSBjbG9z aW5nIGJyYWNrZXQuDQoNCj4gKwkJCQkJIlZJRC9QSUQvVkVSIiwgJmVycik7DQoNCkRpZCB5b3Ug YWdyZWUgd2l0aCB0aGlzICJWSUQvUElEL1ZFUiIgbmFtZSB3aXRoIE1hcmNlbD8gSSdkIGhhdmUg dXNlZA0Kc29tZXRoaW5nIGxpa2UgIkRldmljZUlEIiwgIkRldmljZUlESW5mbyIgb3IgIkRJRElu Zm8iLg0KDQo+ICsJCXN0cmNweSggbWFpbl9vcHRzLmRldmljZWlkLHN0cik7DQoNCkZpcnN0LCBj b2Rpbmcgc3R5bGU6IHJlbW92ZSB0aGUgZXh0cmEgc3BhY2UgYWZ0ZXIgdGhlIG9wZW5pbmcNCnBh cmVudGhlc2lzIGFuZCBhZGQgdGhlIG1pc3Npbmcgb25lIGFmdGVyIHRoZSBjb21tYS4gU2Vjb25k LCB5b3UncmUNCm92ZXJmbG93aW5nIG1haW5fb3B0cy5kZXZpY2VpZCBpZiB0aGUgc3RyaW5nIHBy b3ZpZGVkIGluIG1haW4uY29uZiBpcw0KbG9uZ2VyIHRoYW4gMTQgY2hhcmFjdGVycy4gU28gdGhl IGNhbGwgc2hvdWxkIGJlOg0Kc3RybmNweShtYWluX29wdHMuZGV2aWNlaWQsIHNyYywgc2l6ZW9m KG1haW5fb3B0cy5kZXZpY2VpZCkpOw0KDQpKb2hhbg0KLS0NClRvIHVuc3Vic2NyaWJlIGZyb20g dGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1ibHVldG9vdGgiIGlu DQp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZw0KTW9y ZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5m by5odG1sDQo= ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: To enablue DID in coming bluez release 2008-12-17 2:17 ` Li, Zhigang @ 2008-12-17 2:25 ` David Sainty 0 siblings, 0 replies; 12+ messages in thread From: David Sainty @ 2008-12-17 2:25 UTC (permalink / raw) To: Li, Zhigang; +Cc: linux-bluetooth@vger.kernel.org [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=gb2312, Size: 2687 bytes --] Typo in main.conf: "verndor" Li, Zhigang wrote: > Please check it again. > Marcel mention it in IRC for VID/PID/VER > > --- a/main.c Tue Dec 16 17:43:24 2008 +0800 > +++ b/main.c Wed Dec 17 09:57:37 2008 +0800 > @@ -174,6 +174,17 @@ static void parse_config(GKeyFile *confi > main_opts.inqmode = val; > } > > + str = g_key_file_get_string(config, "General", > + "VID/PID/VER", &err); > + if (err) { > + debug("%s", err->message); > + g_clear_error(&err); > + } else { > + debug("vid/pid/ver=%s", str); > + strncpy(main_opts.deviceid, str, sizeof(main_opts.deviceid)); > + g_free(str); > + } > + > main_opts.link_mode = HCI_LM_ACCEPT; > > main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF | > diff -r 65556502911d main.conf > --- a/main.conf Tue Dec 16 17:43:24 2008 +0800 > +++ b/main.conf Tue Dec 16 17:50:31 2008 +0800 > @@ -28,3 +28,9 @@ OffMode = NoScan > # Discover scheduler interval used in Adapter.DiscoverDevices > # The value is in seconds. Defaults is 0 to use controller scheduler > DiscoverSchedulerInterval = 0 > + > + > +# User verndor and product and version information are used in DID profile > +# ":" to identify the value. FFFF is reserved for VendorId by default. > +VID/PID/VER = 1234:5678:abcd > + > > Thanks > > -----Original Message----- > From: linux-bluetooth-owner@vger.kernel.org [mailto:linux-bluetooth-owner@vger.kernel.org] On Behalf Of Johan Hedberg > Sent: 2008Äê12ÔÂ16ÈÕ 18:29 > To: linux-bluetooth@vger.kernel.org > Subject: Re: To enablue DID in coming bluez release > > Hi, > > Couple of comments: > > On Tue, Dec 16, 2008, Li, Zhigang wrote: > >> main_opts.inqmode = val; >> } >> + str = g_key_file_get_string(config, "General", >> > > Coding style: add empty line after the closing bracket. > > >> + "VID/PID/VER", &err); >> > > Did you agree with this "VID/PID/VER" name with Marcel? I'd have used > something like "DeviceID", "DeviceIDInfo" or "DIDInfo". > > >> + strcpy( main_opts.deviceid,str); >> > > First, coding style: remove the extra space after the opening > parenthesis and add the missing one after the comma. Second, you're > overflowing main_opts.deviceid if the string provided in main.conf is > longer than 14 characters. So the call should be: > strncpy(main_opts.deviceid, src, sizeof(main_opts.deviceid)); > > Johan > -- > To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > N§²æìr¸yúèØb²X¬¶Ç§vØ^\x7f\x7f)Þº{.n\x7f\x7f+·¥{±n[¶\x7f\x7f-\x7f\x7f)í æèw*\x1fjg¬±\x7f\x7f\x1e¶Ý¢j/êäz¹Þ\x7f\x7f¨è\x7f\x7f&\x7f\x7f)ß¡«a¶Ú\x7fþø\x1e®G«éh\x7f\x7f\x0fæj:+v¨wèÙ¥ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: To enablue DID in coming bluez release 2008-12-16 10:29 ` Johan Hedberg 2008-12-17 2:17 ` Li, Zhigang @ 2008-12-17 2:38 ` Marcel Holtmann 2008-12-17 3:10 ` Li, Zhigang 1 sibling, 1 reply; 12+ messages in thread From: Marcel Holtmann @ 2008-12-17 2:38 UTC (permalink / raw) To: Johan Hedberg; +Cc: linux-bluetooth@vger.kernel.org Hi Johan, > Couple of comments: > > On Tue, Dec 16, 2008, Li, Zhigang wrote: > > main_opts.inqmode = val; > > } > > + str = g_key_file_get_string(config, "General", > > Coding style: add empty line after the closing bracket. > > > + "VID/PID/VER", &err); > > Did you agree with this "VID/PID/VER" name with Marcel? I'd have used > something like "DeviceID", "DeviceIDInfo" or "DIDInfo". I think "DeviceID" sounds reasonable. Lets use that one. Regards Marcel ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: To enablue DID in coming bluez release 2008-12-17 2:38 ` Marcel Holtmann @ 2008-12-17 3:10 ` Li, Zhigang 2008-12-17 19:59 ` Marcel Holtmann 0 siblings, 1 reply; 12+ messages in thread From: Li, Zhigang @ 2008-12-17 3:10 UTC (permalink / raw) To: Marcel Holtmann, Johan Hedberg; +Cc: linux-bluetooth@vger.kernel.org VXBkYXRlZDoNCi0tLSBhL21haW4uYwlUdWUgRGVjIDE2IDE3OjQzOjI0IDIwMDggKzA4MDANCisr KyBiL21haW4uYwlXZWQgRGVjIDE3IDExOjU3OjQ3IDIwMDggKzA4MDANCkBAIC0xNzQsNiArMTc0 LDE3IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2NvbmZpZyhHS2V5RmlsZSAqY29uZmkNCiAJCW1haW5f b3B0cy5pbnFtb2RlID0gdmFsOw0KIAl9DQogDQorCXN0ciA9IGdfa2V5X2ZpbGVfZ2V0X3N0cmlu Zyhjb25maWcsICJHZW5lcmFsIiwNCisJCQkJCSJEZXZpY2VJRCIsICZlcnIpOw0KKwlpZiAoZXJy KSB7DQorCQlkZWJ1ZygiJXMiLCBlcnItPm1lc3NhZ2UpOw0KKwkJZ19jbGVhcl9lcnJvcigmZXJy KTsNCisJfSBlbHNlIHsNCisJCWRlYnVnKCJkZXZpY2VpZD0lcyIsIHN0cik7DQorCQlzdHJuY3B5 KG1haW5fb3B0cy5kZXZpY2VpZCwgc3RyLCBzaXplb2YobWFpbl9vcHRzLmRldmljZWlkKSk7DQor CQlnX2ZyZWUoc3RyKTsNCisJfQ0KKw0KIAltYWluX29wdHMubGlua19tb2RlID0gSENJX0xNX0FD Q0VQVDsNCiANCiAJbWFpbl9vcHRzLmxpbmtfcG9saWN5ID0gSENJX0xQX1JTV0lUQ0ggfCBIQ0lf TFBfU05JRkYgfA0KZGlmZiAtciA2NTU1NjUwMjkxMWQgbWFpbi5jb25mDQotLS0gYS9tYWluLmNv bmYJVHVlIERlYyAxNiAxNzo0MzoyNCAyMDA4ICswODAwDQorKysgYi9tYWluLmNvbmYJVHVlIERl YyAxNyAxMTo1Nzo1MSAyMDA4ICswODAwDQpAQCAtMjgsMyArMjgsOSBAQCBPZmZNb2RlID0gTm9T Y2FuDQogIyBEaXNjb3ZlciBzY2hlZHVsZXIgaW50ZXJ2YWwgdXNlZCBpbiBBZGFwdGVyLkRpc2Nv dmVyRGV2aWNlcw0KICMgVGhlIHZhbHVlIGlzIGluIHNlY29uZHMuIERlZmF1bHRzIGlzIDAgdG8g dXNlIGNvbnRyb2xsZXIgc2NoZWR1bGVyDQogRGlzY292ZXJTY2hlZHVsZXJJbnRlcnZhbCA9IDAN CisNCisNCisjIFVzZXIgdmVybmRvciBhbmQgcHJvZHVjdCBhbmQgdmVyc2lvbiBpbmZvcm1hdGlv biBhcmUgdXNlZCBpbiBESUQgcHJvZmlsZQ0KKyMgIjoiIHRvIGlkZW50aWZ5IHRoZSB2YWx1ZS4g RkZGRiBpcyByZXNlcnZlZCBmb3IgVmVuZG9ySWQgYnkgZGVmYXVsdC4NCitEZXZpY2VJRCA9IDEy MzQ6NTY3ODphYmNkDQorDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBsaW51 eC1ibHVldG9vdGgtb3duZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86bGludXgtYmx1ZXRvb3Ro LW93bmVyQHZnZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIE1hcmNlbCBIb2x0bWFubg0KU2Vu dDogMjAwOMTqMTLUwjE3yNUgMTA6MzgNClRvOiBKb2hhbiBIZWRiZXJnDQpDYzogbGludXgtYmx1 ZXRvb3RoQHZnZXIua2VybmVsLm9yZw0KU3ViamVjdDogUmU6IFRvIGVuYWJsdWUgRElEIGluIGNv bWluZyBibHVleiByZWxlYXNlDQoNCkhpIEpvaGFuLA0KDQo+IENvdXBsZSBvZiBjb21tZW50czoN Cj4gDQo+IE9uIFR1ZSwgRGVjIDE2LCAyMDA4LCBMaSwgWmhpZ2FuZyB3cm90ZToNCj4gPiAgCQlt YWluX29wdHMuaW5xbW9kZSA9IHZhbDsNCj4gPiAgCX0NCj4gPiArCXN0ciA9IGdfa2V5X2ZpbGVf Z2V0X3N0cmluZyhjb25maWcsICJHZW5lcmFsIiwNCj4gDQo+IENvZGluZyBzdHlsZTogYWRkIGVt cHR5IGxpbmUgYWZ0ZXIgdGhlIGNsb3NpbmcgYnJhY2tldC4NCj4gDQo+ID4gKwkJCQkJIlZJRC9Q SUQvVkVSIiwgJmVycik7DQo+IA0KPiBEaWQgeW91IGFncmVlIHdpdGggdGhpcyAiVklEL1BJRC9W RVIiIG5hbWUgd2l0aCBNYXJjZWw/IEknZCBoYXZlIHVzZWQNCj4gc29tZXRoaW5nIGxpa2UgIkRl dmljZUlEIiwgIkRldmljZUlESW5mbyIgb3IgIkRJREluZm8iLg0KDQpJIHRoaW5rICJEZXZpY2VJ RCIgc291bmRzIHJlYXNvbmFibGUuIExldHMgdXNlIHRoYXQgb25lLg0KDQpSZWdhcmRzDQoNCk1h cmNlbA0KDQoNCi0tDQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGlu ZSAidW5zdWJzY3JpYmUgbGludXgtYmx1ZXRvb3RoIiBpbg0KdGhlIGJvZHkgb2YgYSBtZXNzYWdl IHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcNCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0 dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0K ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: To enablue DID in coming bluez release 2008-12-17 3:10 ` Li, Zhigang @ 2008-12-17 19:59 ` Marcel Holtmann 2008-12-18 5:55 ` Li, Zhigang 0 siblings, 1 reply; 12+ messages in thread From: Marcel Holtmann @ 2008-12-17 19:59 UTC (permalink / raw) To: Li, Zhigang; +Cc: Johan Hedberg, linux-bluetooth@vger.kernel.org Hi Zhigang, so first things first. NO top-posting on this mailing list. > Updated: > --- a/main.c Tue Dec 16 17:43:24 2008 +0800 > +++ b/main.c Wed Dec 17 11:57:47 2008 +0800 > @@ -174,6 +174,17 @@ static void parse_config(GKeyFile *confi > main_opts.inqmode = val; > } > > + str = g_key_file_get_string(config, "General", > + "DeviceID", &err); > + if (err) { > + debug("%s", err->message); > + g_clear_error(&err); > + } else { > + debug("deviceid=%s", str); > + strncpy(main_opts.deviceid, str, sizeof(main_opts.deviceid)); > + g_free(str); > + } > + > main_opts.link_mode = HCI_LM_ACCEPT; > > main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF | I always need patches against the latest GIT tree. Otherwise I can't merge them and submitting them in a proper format helps me to apply them. > diff -r 65556502911d main.conf > --- a/main.conf Tue Dec 16 17:43:24 2008 +0800 > +++ b/main.conf Tue Dec 17 11:57:51 2008 +0800 > @@ -28,3 +28,9 @@ OffMode = NoScan > # Discover scheduler interval used in Adapter.DiscoverDevices > # The value is in seconds. Defaults is 0 to use controller scheduler > DiscoverSchedulerInterval = 0 > + > + > +# User verndor and product and version information are used in DID profile > +# ":" to identify the value. FFFF is reserved for VendorId by default. > +DeviceID = 1234:5678:abcd So the option should be commented out by default since otherwise every installation now uses vendor id 1234 and that is actually a valid one. Also the description above makes no sense. I committed a patch by myself to the GIT tree now that should fix this. However there is one thing missing. The DID supports USB based vendor ids and Bluetooth based ones. So we need to support both. Feel free to come up with something. Regards Marcel ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: To enablue DID in coming bluez release 2008-12-17 19:59 ` Marcel Holtmann @ 2008-12-18 5:55 ` Li, Zhigang 2008-12-19 19:01 ` Marcel Holtmann 0 siblings, 1 reply; 12+ messages in thread From: Li, Zhigang @ 2008-12-18 5:55 UTC (permalink / raw) To: Marcel Holtmann Cc: Johan Hedberg, linux-bluetooth@vger.kernel.org, Zhao, Forrest SGkgTWFyY2VsLA0KSWYgVVNCIFZlbmRvciBJRCBhbmQgQmx1ZXRvb3RoIFZlbmRvciBJRCBhcmUg Ym90aCBleGlzdCB3aGljaCBvbmUgeW91IHByZWZlciBpbiBESUQ/IFdlIGNhbid0IGFkZCBib3Ro IHJpZ2h0Pw0KVGhhbmtzDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IE1h cmNlbCBIb2x0bWFubiBbbWFpbHRvOm1hcmNlbEBob2x0bWFubi5vcmddIA0KU2VudDogMjAwOMTq MTLUwjE4yNUgMzo1OQ0KVG86IExpLCBaaGlnYW5nDQpDYzogSm9oYW4gSGVkYmVyZzsgbGludXgt Ymx1ZXRvb3RoQHZnZXIua2VybmVsLm9yZw0KU3ViamVjdDogUkU6IFRvIGVuYWJsdWUgRElEIGlu IGNvbWluZyBibHVleiByZWxlYXNlDQoNCkhpIFpoaWdhbmcsDQoNCnNvIGZpcnN0IHRoaW5ncyBm aXJzdC4gTk8gdG9wLXBvc3Rpbmcgb24gdGhpcyBtYWlsaW5nIGxpc3QuDQoNCj4gVXBkYXRlZDoN Cj4gLS0tIGEvbWFpbi5jCVR1ZSBEZWMgMTYgMTc6NDM6MjQgMjAwOCArMDgwMA0KPiArKysgYi9t YWluLmMJV2VkIERlYyAxNyAxMTo1Nzo0NyAyMDA4ICswODAwDQo+IEBAIC0xNzQsNiArMTc0LDE3 IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2NvbmZpZyhHS2V5RmlsZSAqY29uZmkNCj4gIAkJbWFpbl9v cHRzLmlucW1vZGUgPSB2YWw7DQo+ICAJfQ0KPiAgDQo+ICsJc3RyID0gZ19rZXlfZmlsZV9nZXRf c3RyaW5nKGNvbmZpZywgIkdlbmVyYWwiLA0KPiArCQkJCQkiRGV2aWNlSUQiLCAmZXJyKTsNCj4g KwlpZiAoZXJyKSB7DQo+ICsJCWRlYnVnKCIlcyIsIGVyci0+bWVzc2FnZSk7DQo+ICsJCWdfY2xl YXJfZXJyb3IoJmVycik7DQo+ICsJfSBlbHNlIHsNCj4gKwkJZGVidWcoImRldmljZWlkPSVzIiwg c3RyKTsNCj4gKwkJc3RybmNweShtYWluX29wdHMuZGV2aWNlaWQsIHN0ciwgc2l6ZW9mKG1haW5f b3B0cy5kZXZpY2VpZCkpOw0KPiArCQlnX2ZyZWUoc3RyKTsNCj4gKwl9DQo+ICsNCj4gIAltYWlu X29wdHMubGlua19tb2RlID0gSENJX0xNX0FDQ0VQVDsNCj4gIA0KPiAgCW1haW5fb3B0cy5saW5r X3BvbGljeSA9IEhDSV9MUF9SU1dJVENIIHwgSENJX0xQX1NOSUZGIHwNCg0KSSBhbHdheXMgbmVl ZCBwYXRjaGVzIGFnYWluc3QgdGhlIGxhdGVzdCBHSVQgdHJlZS4gT3RoZXJ3aXNlIEkgY2FuJ3QN Cm1lcmdlIHRoZW0gYW5kIHN1Ym1pdHRpbmcgdGhlbSBpbiBhIHByb3BlciBmb3JtYXQgaGVscHMg bWUgdG8gYXBwbHkNCnRoZW0uDQoNCj4gZGlmZiAtciA2NTU1NjUwMjkxMWQgbWFpbi5jb25mDQo+ IC0tLSBhL21haW4uY29uZglUdWUgRGVjIDE2IDE3OjQzOjI0IDIwMDggKzA4MDANCj4gKysrIGIv bWFpbi5jb25mCVR1ZSBEZWMgMTcgMTE6NTc6NTEgMjAwOCArMDgwMA0KPiBAQCAtMjgsMyArMjgs OSBAQCBPZmZNb2RlID0gTm9TY2FuDQo+ICAjIERpc2NvdmVyIHNjaGVkdWxlciBpbnRlcnZhbCB1 c2VkIGluIEFkYXB0ZXIuRGlzY292ZXJEZXZpY2VzDQo+ICAjIFRoZSB2YWx1ZSBpcyBpbiBzZWNv bmRzLiBEZWZhdWx0cyBpcyAwIHRvIHVzZSBjb250cm9sbGVyIHNjaGVkdWxlcg0KPiAgRGlzY292 ZXJTY2hlZHVsZXJJbnRlcnZhbCA9IDANCj4gKw0KPiArDQo+ICsjIFVzZXIgdmVybmRvciBhbmQg cHJvZHVjdCBhbmQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhcmUgdXNlZCBpbiBESUQgcHJvZmlsZQ0K PiArIyAiOiIgdG8gaWRlbnRpZnkgdGhlIHZhbHVlLiBGRkZGIGlzIHJlc2VydmVkIGZvciBWZW5k b3JJZCBieSBkZWZhdWx0Lg0KPiArRGV2aWNlSUQgPSAxMjM0OjU2Nzg6YWJjZA0KDQpTbyB0aGUg b3B0aW9uIHNob3VsZCBiZSBjb21tZW50ZWQgb3V0IGJ5IGRlZmF1bHQgc2luY2Ugb3RoZXJ3aXNl IGV2ZXJ5DQppbnN0YWxsYXRpb24gbm93IHVzZXMgdmVuZG9yIGlkIDEyMzQgYW5kIHRoYXQgaXMg YWN0dWFsbHkgYSB2YWxpZCBvbmUuDQpBbHNvIHRoZSBkZXNjcmlwdGlvbiBhYm92ZSBtYWtlcyBu byBzZW5zZS4NCg0KSSBjb21taXR0ZWQgYSBwYXRjaCBieSBteXNlbGYgdG8gdGhlIEdJVCB0cmVl IG5vdyB0aGF0IHNob3VsZCBmaXggdGhpcy4NCkhvd2V2ZXIgdGhlcmUgaXMgb25lIHRoaW5nIG1p c3NpbmcuIFRoZSBESUQgc3VwcG9ydHMgVVNCIGJhc2VkIHZlbmRvcg0KaWRzIGFuZCBCbHVldG9v dGggYmFzZWQgb25lcy4gU28gd2UgbmVlZCB0byBzdXBwb3J0IGJvdGguIEZlZWwgZnJlZSB0bw0K Y29tZSB1cCB3aXRoIHNvbWV0aGluZy4NCg0KUmVnYXJkcw0KDQpNYXJjZWwNCg0KDQo= ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: To enablue DID in coming bluez release 2008-12-18 5:55 ` Li, Zhigang @ 2008-12-19 19:01 ` Marcel Holtmann 0 siblings, 0 replies; 12+ messages in thread From: Marcel Holtmann @ 2008-12-19 19:01 UTC (permalink / raw) To: Li, Zhigang; +Cc: Johan Hedberg, linux-bluetooth@vger.kernel.org, Zhao, Forrest Hi Zhigang, please stop top-posting. This is an open source mailing list and we do bottom posting and inline quoting. > If USB Vendor ID and Bluetooth Vendor ID are both exist which one you prefer in DID? We can't add both right? Default is Bluetooth since we are doing Bluetooth here and not USB. USB would need a specific prefix. So I prefer usb:1223:1233:1223 for indicating USB ids and without we default to Bluetooth. Care to send a patch for it. Regards Marcel ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2008-12-19 19:01 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-12-12 1:52 To enablue DID in coming bluez release Li, Zhigang 2008-12-12 1:55 ` Marcel Holtmann 2008-12-16 7:55 ` Li, Zhigang 2008-12-16 9:59 ` Li, Zhigang 2008-12-16 10:29 ` Johan Hedberg 2008-12-17 2:17 ` Li, Zhigang 2008-12-17 2:25 ` David Sainty 2008-12-17 2:38 ` Marcel Holtmann 2008-12-17 3:10 ` Li, Zhigang 2008-12-17 19:59 ` Marcel Holtmann 2008-12-18 5:55 ` Li, Zhigang 2008-12-19 19:01 ` Marcel Holtmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox