Diff between e970c174c262aff0debea9a246ebc8960090675d and 4f68b6b51aaa1788589645392ace1b681eeb812e

Changed Files

File Additions Deletions Status
obexd/src/main.c +11 -0 modified
obexd/src/manager.c +46 -0 modified
obexd/src/obex.c +2 -1 modified
obexd/src/obex.h +1 -0 modified

Full Patch

diff --git a/obexd/src/main.c b/obexd/src/main.c
index c7be4ad..d8da5bd 100644
--- a/obexd/src/main.c
+++ b/obexd/src/main.c
@@ -52,6 +52,7 @@
 #define OPP_CHANNEL	9
 #define FTP_CHANNEL	10
 #define PBAP_CHANNEL	15
+#define PCSUITE_CHANNEL	24
 
 #define DEFAULT_ROOT_PATH "/tmp"
 
@@ -117,6 +118,7 @@ static gboolean option_autoaccept = FALSE;
 static gboolean option_opp = FALSE;
 static gboolean option_ftp = FALSE;
 static gboolean option_pbap = FALSE;
+static gboolean option_pcsuite = FALSE;
 
 static GOptionEntry options[] = {
 	{ "nodaemon", 'n', G_OPTION_FLAG_REVERSE,
@@ -138,6 +140,8 @@ static GOptionEntry options[] = {
 				"Enable File Transfer server" },
 	{ "pbap", 'p', 0, G_OPTION_ARG_NONE, &option_pbap,
 				"Enable Phonebook Access server" },
+	{ "pcsuite", 's', 0, G_OPTION_ARG_NONE, &option_pcsuite,
+				"Enable PC Suite Services server" },
 	{ NULL },
 };
 
@@ -273,6 +277,13 @@ int main(int argc, char *argv[])
 				PBAP_CHANNEL, TRUE, FALSE, NULL);
 	}
 
+	if (option_pcsuite == TRUE) {
+		services |= OBEX_PCSUITE;
+		bluetooth_init(OBEX_PCSUITE, "Nokia OBEX PC Suite Services",
+				option_root, PCSUITE_CHANNEL, TRUE,
+				option_autoaccept, option_capability);
+	}
+
 	if (option_devnode)
 		devnode_setup();
 
diff --git a/obexd/src/manager.c b/obexd/src/manager.c
index adcadb3..96bb098 100644
--- a/obexd/src/manager.c
+++ b/obexd/src/manager.c
@@ -170,6 +170,49 @@ const static gchar *pbap_record = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>	\
   </attribute>									\
 </record>";
 
+const static gchar *pcsuite_record =
+"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>					\
+<record>									\
+  <attribute id=\"0x0001\">							\
+    <sequence>									\
+      <uuid value=\"00005005-0000-1000-8000-0002ee000001\"/>			\
+    </sequence>									\
+  </attribute>									\
+										\
+  <attribute id=\"0x0004\">							\
+    <sequence>									\
+      <sequence>								\
+        <uuid value=\"0x0100\"/>						\
+      </sequence>								\
+      <sequence>								\
+        <uuid value=\"0x0003\"/>						\
+        <uint8 value=\"%u\" name=\"channel\"/>					\
+      </sequence>								\
+      <sequence>								\
+        <uuid value=\"0x0008\"/>						\
+      </sequence>								\
+    </sequence>									\
+  </attribute>									\
+										\
+  <attribute id=\"0x0005\">							\
+    <sequence>									\
+      <uuid value=\"0x1002\"/>							\
+    </sequence>									\
+  </attribute>									\
+										\
+  <attribute id=\"0x0009\">							\
+    <sequence>									\
+      <sequence>								\
+        <uuid value=\"00005005-0000-1000-8000-0002ee000001\"/> 			\
+        <uint16 value=\"0x0100\" name=\"version\"/>				\
+      </sequence>								\
+    </sequence>									\
+  </attribute>									\
+										\
+  <attribute id=\"0x0100\">							\
+    <text value=\"%s\" name=\"name\"/>						\
+  </attribute>									\
+</record>";
 
 #define TRANSFER_INTERFACE OPENOBEX_SERVICE ".Transfer"
 #define SESSION_INTERFACE OPENOBEX_SERVICE ".Session"
@@ -473,6 +516,9 @@ static gchar *create_xml_record(const char *name,
 	case OBEX_PBAP:
 		xml = g_markup_printf_escaped(pbap_record, channel, name);
 		break;
+	case OBEX_PCSUITE:
+		xml = g_markup_printf_escaped(pcsuite_record, channel, name);
+		break;
 	default:
 		xml = NULL;
 		break;
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 7197c94..2c1b41c 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
@@ -219,7 +219,8 @@ static void cmd_connect(struct obex_session *os,
 			continue;
 
 		if (memcmp(hd.bs, FTP_TARGET, TARGET_SIZE) == 0 &&
-				os->server->services & OBEX_FTP) {
+				os->server->services &
+						(OBEX_FTP | OBEX_PCSUITE)) {
 			os->target = FTP_TARGET;
 			os->cmds = &ftp;
 			break;
diff --git a/obexd/src/obex.h b/obexd/src/obex.h
index 56a5f37..a1b41bb 100644
--- a/obexd/src/obex.h
+++ b/obexd/src/obex.h
@@ -33,6 +33,7 @@
 #define OBEX_FTP	(1 << 2)
 #define OBEX_BIP	(1 << 3)
 #define OBEX_PBAP	(1 << 4)
+#define OBEX_PCSUITE	(1 << 5)
 
 #define OBJECT_SIZE_UNKNOWN -1
 #define OBJECT_SIZE_DELETE -2