Now data from tracker is fetched without redundand fields. Also
determining which type has phone, address and email (work or home) is
done in backend code - no tracker sub-query is used for that case. Now
queries are about 6 times faster for any amount of data( call history
queries, which were heavy loaded with OPTIONAL sub-queries are even 10
times faster than before)
---
plugins/phonebook-tracker.c | 514 ++++++++++++++-----------------------------
1 files changed, 166 insertions(+), 348 deletions(-)
diff --git a/plugins/phonebook-tracker.c b/plugins/phonebook-tracker.c
index a6b9e72..cdc1008 100644
--- a/plugins/phonebook-tracker.c
+++ b/plugins/phonebook-tracker.c
@@ -43,30 +43,32 @@
#define TRACKER_RESOURCES_INTERFACE "org.freedesktop.Tracker1.Resources"
#define TRACKER_DEFAULT_CONTACT_ME "http://www.semanticdesktop.org/ontologies/2007/03/22/nco#default-contact-me"
+#define AFFILATION_HOME "Home"
+#define AFFILATION_WORK "Work"
#define ADDR_FIELD_AMOUNT 7
-#define PULL_QUERY_COL_AMOUNT 48
+#define PULL_QUERY_COL_AMOUNT 40
#define COUNT_QUERY_COL_AMOUNT 1
-#define COL_HOME_NUMBER 0
+#define COL_PHONE_NUMBER 0
#define COL_FULL_NAME 1
#define COL_FAMILY_NAME 2
#define COL_GIVEN_NAME 3
#define COL_ADDITIONAL_NAME 4
#define COL_NAME_PREFIX 5
#define COL_NAME_SUFFIX 6
-#define COL_HOME_EMAIL 7
-#define COL_WORK_NUMBER 8
+#define COL_EMAIL 7
+#define COL_CELL_NUMBER 8
-#define COL_HOME_ADDR_POBOX 9
-#define COL_HOME_ADDR_EXT 10
-#define COL_HOME_ADDR_STREET 11
-#define COL_HOME_ADDR_LOCALITY 12
-#define COL_HOME_ADDR_REGION 13
-#define COL_HOME_ADDR_CODE 14
-#define COL_HOME_ADDR_COUNTRY 15
+#define COL_ADDR_POBOX 9
+#define COL_ADDR_EXT 10
+#define COL_ADDR_STREET 11
+#define COL_ADDR_LOCALITY 12
+#define COL_ADDR_REGION 13
+#define COL_ADDR_CODE 14
+#define COL_ADDR_COUNTRY 15
#define COL_FAX_NUMBER 16
-#define COL_WORK_EMAIL 17
+#define COL_AFF_TYPE 17
#define COL_BIRTH_DATE 18
#define COL_NICKNAME 19
#define COL_URL 20
@@ -76,51 +78,39 @@
#define COL_ORG_DEPARTMENT 23
#define COL_ORG_ROLE 24
-#define COL_WORK_ADDR_POBOX 25
-#define COL_WORK_ADDR_EXT 26
-#define COL_WORK_ADDR_STREET 27
-#define COL_WORK_ADDR_LOCALITY 28
-#define COL_WORK_ADDR_REGION 29
-#define COL_WORK_ADDR_CODE 30
-#define COL_WORK_ADDR_COUNTRY 31
-
-#define COL_UID 32
-#define COL_TITLE 33
-#define COL_OTHER_NUMBER 34
-
-#define COL_OTHER_ADDR_POBOX 35
-#define COL_OTHER_ADDR_EXT 36
-#define COL_OTHER_ADDR_STREET 37
-#define COL_OTHER_ADDR_LOCALITY 38
-#define COL_OTHER_ADDR_REGION 39
-#define COL_OTHER_ADDR_CODE 40
-#define COL_OTHER_ADDR_COUNTRY 41
-
-#define COL_OTHER_EMAIL 42
-#define COL_CELL_NUMBER 43
-#define COL_DATE 44
-#define COL_SENT 45
-#define COL_ANSWERED 46
-#define CONTACTS_ID_COL 47
+#define COL_UID 25
+#define COL_TITLE 26
+#define COL_OTHER_NUMBER 27
+
+#define COL_OTHER_ADDR_POBOX 28
+#define COL_OTHER_ADDR_EXT 29
+#define COL_OTHER_ADDR_STREET 30
+#define COL_OTHER_ADDR_LOCALITY 31
+#define COL_OTHER_ADDR_REGION 32
+#define COL_OTHER_ADDR_CODE 33
+#define COL_OTHER_ADDR_COUNTRY 34
+
+#define COL_OTHER_EMAIL 35
+#define COL_DATE 36
+#define COL_SENT 37
+#define COL_ANSWERED 38
+#define CONTACTS_ID_COL 39
#define CONTACT_ID_PREFIX "contact:"
#define CONTACTS_QUERY_ALL \
"SELECT nco:phoneNumber(?v) nco:fullname(?c) " \
"nco:nameFamily(?c) nco:nameGiven(?c) " \
"nco:nameAdditional(?c) nco:nameHonorificPrefix(?c) " \
- "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) " \
- "nco:phoneNumber(?w) nco:pobox(?p) nco:extendedAddress(?p) " \
+ "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) ?vc " \
+ "nco:pobox(?p) nco:extendedAddress(?p) " \
"nco:streetAddress(?p) nco:locality(?p) nco:region(?p) " \
- "nco:postalcode(?p) nco:country(?p) ?f nco:emailAddress(?ew) " \
+ "nco:postalcode(?p) nco:country(?p) ?f ?affType " \
"nco:birthDate(?c) nco:nickname(?c) nco:url(?c) " \
"?file nco:fullname(?o) nco:department(?a) " \
- "nco:role(?a) nco:pobox(?pw) nco:extendedAddress(?pw) " \
- "nco:streetAddress(?pw) nco:locality(?pw) nco:region(?pw) " \
- "nco:postalcode(?pw) nco:country(?pw) nco:contactUID(?c) " \
+ "nco:role(?a) nco:contactUID(?c) " \
"nco:title(?a) ?t nco:pobox(?po) nco:extendedAddress(?po) " \
"nco:streetAddress(?po) nco:locality(?po) nco:region(?po) " \
- "nco:postalcode(?po) nco:country(?po) nco:emailAddress(?eo) " \
- "?vc " \
+ "nco:postalcode(?po) nco:country(?po) nco:emailAddress(?eo) " \
"\"NOTACALL\" \"false\" \"false\" ?c " \
"WHERE { " \
"?c a nco:PersonContact . " \
@@ -144,16 +134,10 @@
"}" \
"OPTIONAL { " \
"?c nco:hasAffiliation ?a . " \
- "OPTIONAL { ?a rdfs:label \"Work\" . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
- "OPTIONAL { ?a nco:hasPhoneNumber ?w . } " \
- "}" \
- "OPTIONAL { ?a rdfs:label \"Home\" . " \
+ "OPTIONAL { ?a rdfs:label ?affType .}" \
"OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
"OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
"OPTIONAL { ?a nco:hasPhoneNumber ?v . } " \
- "}" \
"OPTIONAL { ?a nco:org ?o . } " \
"} " \
"OPTIONAL { ?c nco:hasPostalAddress ?po . } " \
@@ -175,22 +159,19 @@
"} GROUP BY ?c"
#define MISSED_CALLS_QUERY \
- "SELECT ?h nco:fullname(?c) " \
+ "SELECT nco:phoneNumber(?ap) nco:fullname(?c) " \
"nco:nameFamily(?c) nco:nameGiven(?c) " \
"nco:nameAdditional(?c) nco:nameHonorificPrefix(?c) " \
- "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) " \
- "?w nco:pobox(?p) nco:extendedAddress(?p) " \
+ "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) ?vc " \
+ "nco:pobox(?p) nco:extendedAddress(?p) " \
"nco:streetAddress(?p) nco:locality(?p) nco:region(?p) " \
- "nco:postalcode(?p) nco:country(?p) \"\" nco:emailAddress(?ew) "\
+ "nco:postalcode(?p) nco:country(?p) \"\" ?affType " \
"nco:birthDate(?c) nco:nickname(?c) nco:url(?c) " \
"?file nco:fullname(?o) nco:department(?a) " \
- "nco:role(?a) nco:pobox(?pw) nco:extendedAddress(?pw) " \
- "nco:streetAddress(?pw) nco:locality(?pw) nco:region(?pw) " \
- "nco:postalcode(?pw) nco:country(?pw) nco:contactUID(?c) " \
- "?title nco:phoneNumber(?t) nco:pobox(?po) " \
- "nco:extendedAddress(?po) nco:streetAddress(?po) " \
- "nco:locality(?po) nco:region(?po) nco:postalcode(?po) " \
- "nco:country(?po) nco:emailAddress(?eo) ?vc " \
+ "nco:role(?a) nco:contactUID(?c) " \
+ "nco:title(?a) nco:phoneNumber(?t) nco:pobox(?po) nco:extendedAddress(?po) " \
+ "nco:streetAddress(?po) nco:locality(?po) nco:region(?po) " \
+ "nco:postalcode(?po) nco:country(?po) nco:emailAddress(?eo) " \
"nmo:receivedDate(?call) " \
"nmo:isSent(?call) nmo:isAnswered(?call) ?x " \
"WHERE { " \
@@ -215,63 +196,30 @@
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"OPTIONAL { " \
"?c nco:hasAffiliation ?a . " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
"OPTIONAL { ?a nco:title ?title } " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
"OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
"OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "} " \
"OPTIONAL { ?a nco:org ?o . } " \
"} " \
"} UNION { " \
"?x a nco:Contact . " \
- "?x nco:hasPhoneNumber ?tmp . " \
+ "?x nco:hasPhoneNumber ?ap . " \
"?call a nmo:Call ; " \
"nmo:from ?x ; " \
"nmo:isSent false ; " \
"nmo:isAnswered false . " \
"?c a nco:PersonContact . " \
"?c nco:hasAffiliation ?a . " \
- "?a nco:hasPhoneNumber ?tmp . " \
+ "?a nco:hasPhoneNumber ?ap . " \
"OPTIONAL { " \
"?c a nco:PersonContact ; nco:photo ?pht . " \
"?pht a nfo:FileDataObject ; nie:url ?file . " \
"} " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "?tmp nco:phoneNumber ?w . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "OPTIONAL { ?a nco:title ?title } " \
- "{ " \
- "SELECT ?p ?e ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Home\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?e . } " \
- "OPTIONAL {?b nco:hasPostalAddress ?p . }}} " \
- "} " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
- "?tmp nco:phoneNumber ?h . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "{ " \
- "SELECT ?pw ?ew ?title ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Work\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?ew . } " \
- "OPTIONAL {?b nco:title ?title } " \
- "OPTIONAL {?b nco:hasPostalAddress ?pw . }}} " \
- "} " \
- "}" \
+ "OPTIONAL {?a rdfs:label ?affType . }" \
+ "OPTIONAL {?a nco:hasEmailAddress ?e . } " \
+ "OPTIONAL {?a nco:hasPostalAddress ?p . }" \
+ "OPTIONAL { ?a nco:org ?o . } " \
+ "OPTIONAL { ?a nco:title ?title } " \
"OPTIONAL { ?c nco:hasPostalAddress ?po . } " \
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"} UNION { " \
@@ -327,22 +275,20 @@
"} GROUP BY ?call ORDER BY DESC(nmo:receivedDate(?call))"
#define INCOMING_CALLS_QUERY \
- "SELECT ?h nco:fullname(?c) " \
+ "SELECT nco:phoneNumber(?ap) nco:fullname(?c) " \
"nco:nameFamily(?c) nco:nameGiven(?c) " \
"nco:nameAdditional(?c) nco:nameHonorificPrefix(?c) " \
- "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) " \
- "?w nco:pobox(?p) nco:extendedAddress(?p) " \
+ "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) ?vc " \
+ "nco:pobox(?p) nco:extendedAddress(?p) " \
"nco:streetAddress(?p) nco:locality(?p) nco:region(?p) " \
- "nco:postalcode(?p) nco:country(?p) \"\" nco:emailAddress(?ew) "\
+ "nco:postalcode(?p) nco:country(?p) \"\" ?affType " \
"nco:birthDate(?c) nco:nickname(?c) nco:url(?c) " \
"?file nco:fullname(?o) nco:department(?a) " \
- "nco:role(?a) nco:pobox(?pw) nco:extendedAddress(?pw) " \
- "nco:streetAddress(?pw) nco:locality(?pw) nco:region(?pw) " \
- "nco:postalcode(?pw) nco:country(?pw) nco:contactUID(?c) " \
- "?title nco:phoneNumber(?t) nco:pobox(?po) " \
- "nco:extendedAddress(?po) nco:streetAddress(?po) " \
- "nco:locality(?po) nco:region(?po) nco:postalcode(?po) " \
- "nco:country(?po) nco:emailAddress(?eo) ?vc " \
+ "nco:role(?a) nco:contactUID(?c) " \
+ "nco:title(?a) nco:phoneNumber(?t) nco:pobox(?po) " \
+ "nco:extendedAddress(?po) " \
+ "nco:streetAddress(?po) nco:locality(?po) nco:region(?po) " \
+ "nco:postalcode(?po) nco:country(?po) nco:emailAddress(?eo) " \
"nmo:receivedDate(?call) " \
"nmo:isSent(?call) nmo:isAnswered(?call) ?x " \
"WHERE { " \
@@ -367,63 +313,30 @@
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"OPTIONAL { " \
"?c nco:hasAffiliation ?a . " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
"OPTIONAL { ?a nco:title ?title } " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
"OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
"OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "} " \
"OPTIONAL { ?a nco:org ?o . } " \
"} " \
"} UNION { " \
"?x a nco:Contact . " \
- "?x nco:hasPhoneNumber ?tmp . " \
+ "?x nco:hasPhoneNumber ?ap . " \
"?call a nmo:Call ; " \
"nmo:from ?x ; " \
"nmo:isSent false ; " \
"nmo:isAnswered true . " \
"?c a nco:PersonContact . " \
"?c nco:hasAffiliation ?a . " \
- "?a nco:hasPhoneNumber ?tmp . " \
+ "?a nco:hasPhoneNumber ?ap . " \
"OPTIONAL { " \
"?c a nco:PersonContact ; nco:photo ?pht . " \
"?pht a nfo:FileDataObject ; nie:url ?file . " \
"} " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "?tmp nco:phoneNumber ?w . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "OPTIONAL { ?a nco:title ?title } " \
- "{ " \
- "SELECT ?p ?e ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Home\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?e . } " \
- "OPTIONAL {?b nco:hasPostalAddress ?p . }}} " \
- "} " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
- "?tmp nco:phoneNumber ?h . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "{ " \
- "SELECT ?pw ?ew ?title ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Work\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?ew . } " \
- "OPTIONAL {?b nco:title ?title } " \
- "OPTIONAL {?b nco:hasPostalAddress ?pw . }}} " \
- "} " \
- "}" \
+ "OPTIONAL {?a rdfs:label ?affType . }" \
+ "OPTIONAL {?a nco:hasEmailAddress ?e . } " \
+ "OPTIONAL {?a nco:hasPostalAddress ?p . }" \
+ "OPTIONAL { ?a nco:org ?o . } " \
+ "OPTIONAL { ?a nco:title ?title } " \
"OPTIONAL { ?c nco:hasPostalAddress ?po . } " \
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"} UNION { " \
@@ -478,22 +391,20 @@
"} GROUP BY ?call ORDER BY DESC(nmo:receivedDate(?call))"
#define OUTGOING_CALLS_QUERY \
- "SELECT ?h nco:fullname(?c) " \
+ "SELECT nco:phoneNumber(?ap) nco:fullname(?c) " \
"nco:nameFamily(?c) nco:nameGiven(?c) " \
"nco:nameAdditional(?c) nco:nameHonorificPrefix(?c) " \
- "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) " \
- "?w nco:pobox(?p) nco:extendedAddress(?p) " \
+ "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) ?vc " \
+ "nco:pobox(?p) nco:extendedAddress(?p) " \
"nco:streetAddress(?p) nco:locality(?p) nco:region(?p) " \
- "nco:postalcode(?p) nco:country(?p) \"\" nco:emailAddress(?ew) "\
+ "nco:postalcode(?p) nco:country(?p) \"\" ?affType " \
"nco:birthDate(?c) nco:nickname(?c) nco:url(?c) " \
"?file nco:fullname(?o) nco:department(?a) " \
- "nco:role(?a) nco:pobox(?pw) nco:extendedAddress(?pw) " \
- "nco:streetAddress(?pw) nco:locality(?pw) nco:region(?pw) " \
- "nco:postalcode(?pw) nco:country(?pw) nco:contactUID(?c) " \
- "?title nco:phoneNumber(?t) nco:pobox(?po) " \
- "nco:extendedAddress(?po) nco:streetAddress(?po) " \
- "nco:locality(?po) nco:region(?po) nco:postalcode(?po) " \
- "nco:country(?po) nco:emailAddress(?eo) ?vc " \
+ "nco:role(?a) nco:contactUID(?c) " \
+ "nco:title(?a) nco:phoneNumber(?t) nco:pobox(?po) " \
+ "nco:extendedAddress(?po) " \
+ "nco:streetAddress(?po) nco:locality(?po) nco:region(?po) " \
+ "nco:postalcode(?po) nco:country(?po) nco:emailAddress(?eo) " \
"nmo:receivedDate(?call) " \
"nmo:isSent(?call) nmo:isAnswered(?call) ?x " \
"WHERE { " \
@@ -517,62 +428,29 @@
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"OPTIONAL { " \
"?c nco:hasAffiliation ?a . " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
"OPTIONAL { ?a nco:title ?title } " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
"OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
"OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "} " \
"OPTIONAL { ?a nco:org ?o . } " \
"} " \
"} UNION { " \
"?x a nco:Contact . " \
- "?x nco:hasPhoneNumber ?tmp . " \
+ "?x nco:hasPhoneNumber ?ap . " \
"?call a nmo:Call ; " \
"nmo:to ?x ; " \
"nmo:isSent true . " \
"?c a nco:PersonContact . " \
"?c nco:hasAffiliation ?a . " \
- "?a nco:hasPhoneNumber ?tmp . " \
+ "?a nco:hasPhoneNumber ?ap . " \
"OPTIONAL { " \
"?c a nco:PersonContact ; nco:photo ?pht . " \
"?pht a nfo:FileDataObject ; nie:url ?file . " \
"} " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "?tmp nco:phoneNumber ?w . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "OPTIONAL { ?a nco:title ?title } " \
- "{ " \
- "SELECT ?p ?e ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Home\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?e . } " \
- "OPTIONAL {?b nco:hasPostalAddress ?p . }}} " \
- "} " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
- "?tmp nco:phoneNumber ?h . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "{ " \
- "SELECT ?pw ?ew ?title ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Work\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:title ?title } " \
- "OPTIONAL {?b nco:hasPostalAddress ?pw . }}} " \
- "} " \
- "}" \
+ "OPTIONAL {?a rdfs:label ?affType . }" \
+ "OPTIONAL {?a nco:hasEmailAddress ?e . } " \
+ "OPTIONAL {?a nco:hasPostalAddress ?p . }" \
+ "OPTIONAL { ?a nco:org ?o . } " \
+ "OPTIONAL { ?a nco:title ?title } " \
"OPTIONAL { ?c nco:hasPostalAddress ?po . } " \
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"} UNION { " \
@@ -623,22 +501,20 @@
"} GROUP BY ?call ORDER BY DESC(nmo:sentDate(?call))"
#define COMBINED_CALLS_QUERY \
- "SELECT ?h nco:fullname(?c) " \
+ "SELECT nco:phoneNumber(?ap) nco:fullname(?c) " \
"nco:nameFamily(?c) nco:nameGiven(?c) " \
"nco:nameAdditional(?c) nco:nameHonorificPrefix(?c) " \
- "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) " \
- "?w nco:pobox(?p) nco:extendedAddress(?p) " \
+ "nco:nameHonorificSuffix(?c) nco:emailAddress(?e) ?vc " \
+ "nco:pobox(?p) nco:extendedAddress(?p) " \
"nco:streetAddress(?p) nco:locality(?p) nco:region(?p) " \
- "nco:postalcode(?p) nco:country(?p) \"\" nco:emailAddress(?ew) "\
+ "nco:postalcode(?p) nco:country(?p) \"\" ?affType " \
"nco:birthDate(?c) nco:nickname(?c) nco:url(?c) " \
"?file nco:fullname(?o) nco:department(?a) " \
- "nco:role(?a) nco:pobox(?pw) nco:extendedAddress(?pw) " \
- "nco:streetAddress(?pw) nco:locality(?pw) nco:region(?pw) " \
- "nco:postalcode(?pw) nco:country(?pw) nco:contactUID(?c) " \
- "?title nco:phoneNumber(?t) nco:pobox(?po) " \
- "nco:extendedAddress(?po) nco:streetAddress(?po) " \
- "nco:locality(?po) nco:region(?po) nco:postalcode(?po) " \
- "nco:country(?po) nco:emailAddress(?eo) ?vc " \
+ "nco:role(?a) nco:contactUID(?c) " \
+ "nco:title(?a) nco:phoneNumber(?t) nco:pobox(?po) " \
+ "nco:extendedAddress(?po) " \
+ "nco:streetAddress(?po) nco:locality(?po) nco:region(?po) " \
+ "nco:postalcode(?po) nco:country(?po) nco:emailAddress(?eo) " \
"nmo:receivedDate(?call) " \
"nmo:isSent(?call) nmo:isAnswered(?call) ?x " \
"WHERE { " \
@@ -662,62 +538,29 @@
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"OPTIONAL { " \
"?c nco:hasAffiliation ?a . " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
"OPTIONAL { ?a nco:title ?title } " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
"OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
"OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "} " \
"OPTIONAL { ?a nco:org ?o . } " \
"} " \
"} UNION { " \
"?x a nco:Contact . " \
- "?x nco:hasPhoneNumber ?tmp . " \
+ "?x nco:hasPhoneNumber ?ap . " \
"?call a nmo:Call ; " \
"nmo:to ?x ; " \
"nmo:isSent true . " \
"?c a nco:PersonContact . " \
"?c nco:hasAffiliation ?a . " \
- "?a nco:hasPhoneNumber ?tmp . " \
+ "?a nco:hasPhoneNumber ?ap . " \
"OPTIONAL { " \
"?c a nco:PersonContact ; nco:photo ?pht . " \
"?pht a nfo:FileDataObject ; nie:url ?file . " \
"} " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "?tmp nco:phoneNumber ?w . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "OPTIONAL { ?a nco:title ?title } " \
- "{ " \
- "SELECT ?p ?e ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Home\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?e . } " \
- "OPTIONAL {?b nco:hasPostalAddress ?p . }}} " \
- "} " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
- "?tmp nco:phoneNumber ?h . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "{ " \
- "SELECT ?pw ?ew ?title ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Work\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?ew . } " \
- "OPTIONAL {?b nco:title ?title } " \
- "OPTIONAL {?b nco:hasPostalAddress ?pw . }}} " \
- "} " \
- "}" \
+ "OPTIONAL {?a rdfs:label ?affType . }" \
+ "OPTIONAL {?a nco:hasEmailAddress ?e . } " \
+ "OPTIONAL {?a nco:hasPostalAddress ?p . }" \
+ "OPTIONAL { ?a nco:org ?o . } " \
+ "OPTIONAL { ?a nco:title ?title } " \
"OPTIONAL { ?c nco:hasPostalAddress ?po . } " \
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"} UNION { " \
@@ -752,62 +595,29 @@
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"OPTIONAL { " \
"?c nco:hasAffiliation ?a . " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
"OPTIONAL { ?a nco:title ?title } " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
"OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
"OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "} " \
"OPTIONAL { ?a nco:org ?o . } " \
"} " \
"} UNION { " \
"?x a nco:Contact . " \
- "?x nco:hasPhoneNumber ?tmp . " \
+ "?x nco:hasPhoneNumber ?ap . " \
"?call a nmo:Call ; " \
"nmo:from ?x ; " \
"nmo:isSent false . " \
"?c a nco:PersonContact . " \
"?c nco:hasAffiliation ?a . " \
- "?a nco:hasPhoneNumber ?tmp . " \
+ "?a nco:hasPhoneNumber ?ap . " \
"OPTIONAL { " \
"?c a nco:PersonContact ; nco:photo ?pht . " \
"?pht a nfo:FileDataObject ; nie:url ?file . " \
"} " \
- "OPTIONAL { " \
- "?a rdfs:label \"Work\" . " \
- "?tmp nco:phoneNumber ?w . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "OPTIONAL { ?a nco:title ?title } " \
- "{ " \
- "SELECT ?p ?e ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Home\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?e . } " \
- "OPTIONAL {?b nco:hasPostalAddress ?p . }}} " \
- "} " \
- "}" \
- "OPTIONAL { " \
- "?a rdfs:label \"Home\" . " \
- "?tmp nco:phoneNumber ?h . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
- "OPTIONAL { ?a nco:org ?o . } " \
- "{ " \
- "SELECT ?pw ?ew ?title ?c WHERE { " \
- "?c nco:hasAffiliation ?b . " \
- "OPTIONAL {?b rdfs:label \"Work\" . " \
- "OPTIONAL {?b nco:hasEmailAddress ?ew . } " \
- "OPTIONAL {?b nco:title ?title } " \
- "OPTIONAL {?b nco:hasPostalAddress ?pw . }}} " \
- "} " \
- "}" \
+ "OPTIONAL {?a rdfs:label ?affType . }" \
+ "OPTIONAL {?a nco:hasEmailAddress ?e . } " \
+ "OPTIONAL {?a nco:hasPostalAddress ?p . }" \
+ "OPTIONAL { ?a nco:org ?o . } " \
+ "OPTIONAL { ?a nco:title ?title } " \
"OPTIONAL { ?c nco:hasPostalAddress ?po . } " \
"OPTIONAL { ?c nco:hasEmailAddress ?eo . } " \
"} UNION { " \
@@ -880,23 +690,20 @@
"} GROUP BY ?call ORDER BY DESC(nmo:receivedDate(?call))"
#define CONTACTS_QUERY_FROM_URI \
- "SELECT nco:phoneNumber(?v) nco:fullname(<%s>) " \
- "nco:nameFamily(<%s>) nco:nameGiven(<%s>) " \
- "nco:nameAdditional(<%s>) nco:nameHonorificPrefix(<%s>) " \
- "nco:nameHonorificSuffix(<%s>) nco:emailAddress(?e) " \
- "nco:phoneNumber(?w) nco:pobox(?p) nco:extendedAddress(?p) " \
+ "SELECT nco:phoneNumber(?v) nco:fullname(<%s>) " \
+ "nco:nameFamily(<%s>) nco:nameGiven(<%s>) " \
+ "nco:nameAdditional(<%s>) nco:nameHonorificPrefix(<%s>) " \
+ "nco:nameHonorificSuffix(<%s>) nco:emailAddress(?e) ?vc " \
+ "nco:pobox(?p) nco:extendedAddress(?p) " \
"nco:streetAddress(?p) nco:locality(?p) nco:region(?p) " \
- "nco:postalcode(?p) nco:country(?p) ?f nco:emailAddress(?ew) " \
+ "nco:postalcode(?p) nco:country(?p) ?f ?affType " \
"nco:birthDate(<%s>) nco:nickname(<%s>) nco:url(<%s>) " \
"?file nco:fullname(?o) nco:department(?a) " \
- "nco:role(?a) nco:pobox(?pw) nco:extendedAddress(?pw) " \
- "nco:streetAddress(?pw) nco:locality(?pw) nco:region(?pw) " \
- "nco:postalcode(?pw) nco:country(?pw) nco:contactUID(<%s>) " \
+ "nco:role(?a) nco:contactUID(<%s>) " \
"nco:title(?a) ?t nco:pobox(?po) nco:extendedAddress(?po) " \
"nco:streetAddress(?po) nco:locality(?po) nco:region(?po) " \
- "nco:postalcode(?po) nco:country(?po) nco:emailAddress(?eo) " \
- "?vc " \
- "\"NOTACALL\" \"false\" \"false\" <%s> " \
+ "nco:postalcode(?po) nco:country(?po) nco:emailAddress(?eo) " \
+ "\"NOTACALL\" \"false\" \"false\" <%s> " \
"WHERE { " \
"<%s> a nco:PersonContact . " \
"OPTIONAL { " \
@@ -919,16 +726,10 @@
"}" \
"OPTIONAL { " \
"<%s> nco:hasAffiliation ?a . " \
- "OPTIONAL { ?a rdfs:label \"Work\" . " \
- "OPTIONAL { ?a nco:hasEmailAddress ?ew . } " \
- "OPTIONAL { ?a nco:hasPostalAddress ?pw . } " \
- "OPTIONAL { ?a nco:hasPhoneNumber ?w . } " \
- "}" \
- "OPTIONAL { ?a rdfs:label \"Home\" . " \
+ "OPTIONAL { ?a rdfs:label ?affType .}" \
"OPTIONAL { ?a nco:hasEmailAddress ?e . } " \
"OPTIONAL { ?a nco:hasPostalAddress ?p . } " \
"OPTIONAL { ?a nco:hasPhoneNumber ?v . } " \
- "}" \
"OPTIONAL { ?a nco:org ?o . } " \
"} " \
"OPTIONAL { <%s> nco:hasPostalAddress ?po . } " \
@@ -939,7 +740,7 @@
"SELECT \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" "\
"\"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" " \
"\"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" " \
- "\"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" \"\" " \
+ "\"\" " \
"nco:phoneNumber(?t) \"NOTACALL\" \"false\" \"false\" <%s> " \
"WHERE { " \
"<%s> a nco:Contact . " \
@@ -1491,57 +1292,75 @@ static void contact_init(struct phonebook_contact *contact, char **reply)
reply[COL_ANSWERED]);
}
+static enum phonebook_number_type get_phone_type(const char *affilation)
+{
+ if (g_strcmp0(AFFILATION_HOME, affilation) == 0)
+ return TEL_TYPE_HOME;
+ else if (g_strcmp0(AFFILATION_WORK, affilation) == 0)
+ return TEL_TYPE_WORK;
+
+ return TEL_TYPE_OTHER;
+}
+
static void contact_add_numbers(struct phonebook_contact *contact,
char **reply)
{
- add_phone_number(contact, reply[COL_HOME_NUMBER], TEL_TYPE_HOME);
- add_phone_number(contact, reply[COL_WORK_NUMBER], TEL_TYPE_WORK);
+ add_phone_number(contact, reply[COL_PHONE_NUMBER],
+ get_phone_type(reply[COL_AFF_TYPE]));
add_phone_number(contact, reply[COL_FAX_NUMBER], TEL_TYPE_FAX);
add_phone_number(contact, reply[COL_CELL_NUMBER], TEL_TYPE_MOBILE);
if (g_strcmp0(reply[COL_OTHER_NUMBER], reply[COL_CELL_NUMBER]) == 0)
return;
- if (g_strcmp0(reply[COL_OTHER_NUMBER], reply[COL_WORK_NUMBER]) == 0)
- return;
-
- if (g_strcmp0(reply[COL_OTHER_NUMBER], reply[COL_HOME_NUMBER]) == 0)
+ if (g_strcmp0(reply[COL_OTHER_NUMBER], reply[COL_PHONE_NUMBER]) == 0)
return;
add_phone_number(contact, reply[COL_OTHER_NUMBER], TEL_TYPE_OTHER);
}
+static enum phonebook_email_type get_email_type(const char *affilation)
+{
+ if (g_strcmp0(AFFILATION_HOME, affilation) == 0)
+ return EMAIL_TYPE_HOME;
+ else if (g_strcmp0(AFFILATION_WORK, affilation) == 0)
+ return EMAIL_TYPE_WORK;
+
+ return EMAIL_TYPE_OTHER;
+}
+
static void contact_add_emails(struct phonebook_contact *contact,
char **reply)
{
- add_email(contact, reply[COL_HOME_EMAIL], EMAIL_TYPE_HOME);
- add_email(contact, reply[COL_WORK_EMAIL], EMAIL_TYPE_WORK);
+ add_email(contact, reply[COL_EMAIL],
+ get_email_type(reply[COL_AFF_TYPE]));
add_email(contact, reply[COL_OTHER_EMAIL], EMAIL_TYPE_OTHER);
}
+static enum phonebook_address_type get_addr_type(const char *affilation)
+{
+ if (g_strcmp0(AFFILATION_HOME, affilation) == 0)
+ return ADDR_TYPE_HOME;
+ else if (g_strcmp0(AFFILATION_WORK, affilation) == 0)
+ return ADDR_TYPE_WORK;
+
+ return ADDR_TYPE_HOME;
+}
+
static void contact_add_addresses(struct phonebook_contact *contact,
char **reply)
{
- char *home_addr, *work_addr, *other_addr;
-
- home_addr = g_strdup_printf("%s;%s;%s;%s;%s;%s;%s",
- reply[COL_HOME_ADDR_POBOX],
- reply[COL_HOME_ADDR_EXT],
- reply[COL_HOME_ADDR_STREET],
- reply[COL_HOME_ADDR_LOCALITY],
- reply[COL_HOME_ADDR_REGION],
- reply[COL_HOME_ADDR_CODE],
- reply[COL_HOME_ADDR_COUNTRY]);
-
- work_addr = g_strdup_printf("%s;%s;%s;%s;%s;%s;%s",
- reply[COL_WORK_ADDR_POBOX],
- reply[COL_WORK_ADDR_EXT],
- reply[COL_WORK_ADDR_STREET],
- reply[COL_WORK_ADDR_LOCALITY],
- reply[COL_WORK_ADDR_REGION],
- reply[COL_WORK_ADDR_CODE],
- reply[COL_WORK_ADDR_COUNTRY]);
+ char *main_addr, *other_addr;
+
+ main_addr = g_strdup_printf("%s;%s;%s;%s;%s;%s;%s",
+ reply[COL_ADDR_POBOX],
+ reply[COL_ADDR_EXT],
+ reply[COL_ADDR_STREET],
+ reply[COL_ADDR_LOCALITY],
+ reply[COL_ADDR_REGION],
+ reply[COL_ADDR_CODE],
+ reply[COL_ADDR_COUNTRY]);
other_addr = g_strdup_printf("%s;%s;%s;%s;%s;%s;%s",
reply[COL_OTHER_ADDR_POBOX],
@@ -1552,12 +1371,11 @@ static void contact_add_addresses(struct phonebook_contact *contact,
reply[COL_OTHER_ADDR_CODE],
reply[COL_OTHER_ADDR_COUNTRY]);
- add_address(contact, home_addr, ADDR_TYPE_HOME);
- add_address(contact, work_addr, ADDR_TYPE_WORK);
+ add_address(contact, main_addr, get_addr_type(reply[COL_AFF_TYPE]));
+
add_address(contact, other_addr, ADDR_TYPE_OTHER);
- g_free(home_addr);
- g_free(work_addr);
+ g_free(main_addr);
g_free(other_addr);
}
--
1.7.0.4
On Fri, Dec 3, 2010 at 3:01 PM, Brian Gix <[email protected]> wrote:
> [Gix] And how do I get gatttool to build? This may be academic until I get fixed channel 4 access via the new kernel.
gatttool is built along with bluez. Just be sure to use latest code
from GIT, and pass "--enable-attrib" to ./configure (or use
./bootstrap-configure)
Regards,
--
Anderson Lizardo
OpenBossa Labs - INdT
Manaus - Brazil
Hi Claudio & Mike
-----Original Message-----
From: Claudio Takahasi [mailto:[email protected]]
Sent: 03 December, 2010 10:07 AM
To: Mike Tsai
Cc: Brian Gix; [email protected]
Subject: Re: Are LE connections possible yet?
Hi All,
On Thu, Dec 2, 2010 at 10:21 PM, Mike Tsai <[email protected]> wrote:
> Hi Brian,
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Brian Gix
> Sent: Thursday, December 02, 2010 3:46 PM
> To: [email protected]
> Subject: Are LE connections possible yet?
>
> Hi All,
>
> I am bringing up an LE capable (BR/EDR/LE) baseband, and attempting to use
> it to establish a
> GATT/ATT connection over an LE link. However when executing the command:
>
> % ./tools/hcitool lecc 00:14:BB:55:66:77
>
> I get a very rapid failure of:
>
> "Could not create connection: Operation not permitted"
>
> The correct HCI command does not appear to be making it to the BR/EDR/LE
> baseband.
>
> It appears to be a socket issue of some sort. I can cause this error, when
> attached to the baseband, and:
> "Could not create connection: File descriptor in bad state"
>
> if I have not yet run hciattach.
>
> Other (BR/EDR) hcitool commands work as expected, such as "hcitool scan" and
> "hcitool inq"
> [MTsai]which kernel driver you are using? It seems the kernel does not know the LE create connection OpCode?
>
>
> Brian Gix
> [email protected]
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
For hcitool lecc it is not necessary a LE "capable" kernel, hcitool
sends the HCI commands from the userspace.
Try sudo hcitool lecc ... and don't forget putting the remote on
advertising mode: $hciconfig hcix leadv
If you want to test the connections managed by the kernel use Ville's kernel:
git://git.kernel.org/pub/scm/linux/kernel/git/vtervo/bluetooth-le-2.6.git
l2test support LE connections, use -J option to pass the fixed channel 4
[Gix] So I am cloning Ville's kernel as I type. I did get the LE connection up and running (raw LE ACL connections, "sudo" was the key) but I will need it to be talking on Fixed channel 4, because it is a non-bluez server that I am connecting to, which does use Fixed-4. This will probably take me the rest of the day.
[Gix] My next question is: How long until Ville's kernel is part of the tip?
[Gix] And how do I get gatttool to build? This may be academic until I get fixed channel 4 access via the new kernel.
Regards,
Claudio
Hi All,
On Thu, Dec 2, 2010 at 10:21 PM, Mike Tsai <[email protected]> wrote:
> Hi Brian,
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Brian Gix
> Sent: Thursday, December 02, 2010 3:46 PM
> To: [email protected]
> Subject: Are LE connections possible yet?
>
> Hi All,
>
> I am bringing up an LE capable (BR/EDR/LE) baseband, and attempting to use
> it to establish a
> GATT/ATT connection over an LE link. However when executing the command:
>
> % ./tools/hcitool lecc 00:14:BB:55:66:77
>
> I get a very rapid failure of:
>
> "Could not create connection: Operation not permitted"
>
> The correct HCI command does not appear to be making it to the BR/EDR/LE
> baseband.
>
> It appears to be a socket issue of some sort. I can cause this error, when
> attached to the baseband, and:
> "Could not create connection: File descriptor in bad state"
>
> if I have not yet run hciattach.
>
> Other (BR/EDR) hcitool commands work as expected, such as "hcitool scan" and
> "hcitool inq"
> [MTsai]which kernel driver you are using? It seems the kernel does not know the LE create connection OpCode?
>
>
> Brian Gix
> [email protected]
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
For hcitool lecc it is not necessary a LE "capable" kernel, hcitool
sends the HCI commands from the userspace.
Try sudo hcitool lecc ... and don't forget putting the remote on
advertising mode: $hciconfig hcix leadv
If you want to test the connections managed by the kernel use Ville's kernel:
git://git.kernel.org/pub/scm/linux/kernel/git/vtervo/bluetooth-le-2.6.git
l2test support LE connections, use -J option to pass the fixed channel 4
Regards,
Claudio
Hi Brian,
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Brian Gix
Sent: Thursday, December 02, 2010 3:46 PM
To: [email protected]
Subject: Are LE connections possible yet?
Hi All,
I am bringing up an LE capable (BR/EDR/LE) baseband, and attempting to use
it to establish a
GATT/ATT connection over an LE link. However when executing the command:
% ./tools/hcitool lecc 00:14:BB:55:66:77
I get a very rapid failure of:
"Could not create connection: Operation not permitted"
The correct HCI command does not appear to be making it to the BR/EDR/LE
baseband.
It appears to be a socket issue of some sort. I can cause this error, when
attached to the baseband, and:
"Could not create connection: File descriptor in bad state"
if I have not yet run hciattach.
Other (BR/EDR) hcitool commands work as expected, such as "hcitool scan" and
"hcitool inq"
[MTsai]which kernel driver you are using? It seems the kernel does not know the LE create connection OpCode?
Brian Gix
[email protected]
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
Hi All,
I am bringing up an LE capable (BR/EDR/LE) baseband, and attempting to use
it to establish a
GATT/ATT connection over an LE link. However when executing the command:
% ./tools/hcitool lecc 00:14:BB:55:66:77
I get a very rapid failure of:
"Could not create connection: Operation not permitted"
The correct HCI command does not appear to be making it to the BR/EDR/LE
baseband.
It appears to be a socket issue of some sort. I can cause this error, when
attached to the baseband, and:
"Could not create connection: File descriptor in bad state"
if I have not yet run hciattach.
Other (BR/EDR) hcitool commands work as expected, such as "hcitool scan" and
"hcitool inq"
Brian Gix
[email protected]
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
Hi Radek,
On Thu, Dec 02, 2010, Radoslaw Jablonski wrote:
> Now data from tracker is fetched without redundand fields. Also
> determining which type has phone, address and email (work or home) is
> done in backend code - no tracker sub-query is used for that case. Now
> queries are about 6 times faster for any amount of data( call history
> queries, which were heavy loaded with OPTIONAL sub-queries are even 10
> times faster than before)
> ---
> plugins/phonebook-tracker.c | 514 ++++++++++++++-----------------------------
> 1 files changed, 166 insertions(+), 348 deletions(-)
Pushed upstream. Thanks.
Johan