[oe-commits] org.oe.dev merge of '3f578fcf74e37d012b104754e3387f72f82fa832'

daniel commit openembedded-commits at lists.openembedded.org
Tue Jul 31 11:50:39 UTC 2007


merge of '3f578fcf74e37d012b104754e3387f72f82fa832'
     and 'aa90cc7b5525f5dcbe8d32593886404ea450d216'

Author: daniel at openembedded.org
Branch: org.openembedded.dev
Revision: 37ee63a721c659a42f5d0b0f448c2d99d9b8fa71
ViewMTN: http://monotone.openembedded.org/revision.psp?id=37ee63a721c659a42f5d0b0f448c2d99d9b8fa71
Files:
1
packages/openmoko2/openmoko-session2/etc/matchbox/session
packages/openmoko2/openmoko-session2.bb
packages/gsm/files/alive-start-if-interpreter-ready.patch
packages/gsm/files/vendor-qc-v0.patch
packages/gnash
packages/gnash/gnash_0.8.0.bb
packages/gsm/files/libgsmd-tool-fix.patch
packages/gsm/files/mlbuf-static-bss.patch
packages/gsm/files/sms-hacks.patch
packages/gsm/libgsmd_svn.bb
Diffs:

#
# mt diff -r3f578fcf74e37d012b104754e3387f72f82fa832 -r37ee63a721c659a42f5d0b0f448c2d99d9b8fa71
#
# 
# 
# patch "packages/openmoko2/openmoko-session2/etc/matchbox/session"
#  from [26f95f7ca147900b49432aadc380a147c5b707f2]
#    to [ba398de151a5bc2ea75292294c1b6fe604547529]
# 
# patch "packages/openmoko2/openmoko-session2.bb"
#  from [287c0e28376a34132ad66d96f657e7b35fbabfdb]
#    to [96268eb00aea83baa6ac6f978f6a6725dd61f5c1]
# 
============================================================
--- packages/openmoko2/openmoko-session2/etc/matchbox/session	26f95f7ca147900b49432aadc380a147c5b707f2
+++ packages/openmoko2/openmoko-session2/etc/matchbox/session	ba398de151a5bc2ea75292294c1b6fe604547529
@@ -1,9 +1,9 @@ SHOWCURSOR="no"
 #!/bin/sh
 
 SHOWCURSOR="no"
 
-openmoko-today2 &
-openmoko-dialer2 &
+openmoko-today &
+openmoko-dialer &
 
 matchbox-window-manager -use_titlebar yes -use_desktop_mode decorated -theme openmoko-standard-2 -use_cursor $SHOWCURSOR $@ &
 
============================================================
--- packages/openmoko2/openmoko-session2.bb	287c0e28376a34132ad66d96f657e7b35fbabfdb
+++ packages/openmoko2/openmoko-session2.bb	96268eb00aea83baa6ac6f978f6a6725dd61f5c1
@@ -1,9 +1,9 @@ RCONFLICTS = "openmoko-session"
 DESCRIPTION = "Custom MB session files for poky"
 LICENSE = "GPL"
 SECTION = "x11"
 RDEPENDS = "matchbox-common matchbox-applet-startup-monitor matchbox-panel-2"
 RCONFLICTS = "openmoko-session"
-PR = "r21"
+PR = "r22"
 
 SRC_URI = "file://etc"
 S = ${WORKDIR}


#
# mt diff -raa90cc7b5525f5dcbe8d32593886404ea450d216 -r37ee63a721c659a42f5d0b0f448c2d99d9b8fa71
#
# 
# 
# delete "packages/gsm/files/alive-start-if-interpreter-ready.patch"
# 
# delete "packages/gsm/files/vendor-qc-v0.patch"
# 
# add_dir "packages/gnash"
# 
# add_file "packages/gnash/gnash_0.8.0.bb"
#  content [bc7ce0bb9d022a74c35eff388b180d174a1a2eef]
# 
# add_file "packages/gsm/files/libgsmd-tool-fix.patch"
#  content [e6e57fad53fa4e690e3cfa28074c95ba9f0b05dd]
# 
# add_file "packages/gsm/files/mlbuf-static-bss.patch"
#  content [90a37e73a035a661da81bebd930d78f4ee4bf923]
# 
# add_file "packages/gsm/files/sms-hacks.patch"
#  content [050b68da310e9160382328247350003d4065017d]
# 
# patch "packages/gsm/libgsmd_svn.bb"
#  from [7b5788cdd0f3ccee90d8b989942ac21ab1ad4db3]
#    to [9f4f14eaa3f730354da2b2506274dbb79c4e155a]
# 
============================================================
--- packages/gnash/gnash_0.8.0.bb	bc7ce0bb9d022a74c35eff388b180d174a1a2eef
+++ packages/gnash/gnash_0.8.0.bb	bc7ce0bb9d022a74c35eff388b180d174a1a2eef
@@ -0,0 +1,79 @@
+DESCRIPTION = "Gnash is a GNU Flash movie player that supports many SWF v7 features"
+
+LICENSE = "GPL-2"
+HOMEPAGE = "http://www.gnu.org/software/gnash"
+
+DEPENDS = "gtk+ cairo libxml2 libmad libsdl-mixer zlib boost jpeg pango curl"
+
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gnash/${PV}/gnash-${PV}.tar.bz2"
+
+
+EXTRA_OECONF = "--enable-gui=gtk \
+                --enable-renderer=cairo \
+		--enable-media=none \
+                --disable-klash \
+		--enable-z \
+		--enable-jpeg \
+		--disable-glext \
+		--enable-Xft \
+		--enable-expat \
+		--enable-mad \
+		--enable-cairo \
+		--disable-plugin \
+		--disable-cygnal \
+		--with-boost-incl=${STAGING_INCDIR} \
+		--with-boost-lib=${STAGING_LIBDIR} \
+		--with-libxml-incl=${STAGING_INCDIR}/libxml2 \
+		--with-libxml-lib=${STAGING_LIBDIR} \
+		--with-glib-incl=${STAGING_INCDIR}/glib-2.0 \
+#		--with-glib-lib=${STAGING_LIBDIR} \
+		--with-gtk2-incl=${STAGING_INCDIR}/gtk-2.0 \
+		--with-pango-incl=${STAGING_INCDIR}/pango-1.0 \
+#		--with-pango-lib=${STAGING_LIBDIR} \
+		--with-sdl-incl=${STAGING_INCDIR}/SDL \
+		--with-atk-incl=${STAGING_INCDIR}/atk-1.0 \
+		--with-Xft-incl=${STAGING_INCDIR}/X11 \
+		--with-expat-incl=${STAGING_INCDIR} \
+		--with-mad-incl=${STAGING_INCDIR} \
+		--with-cairo-incl=${STAGING_INCDIR}/cairo \
+		--with-curl-incl=${STAGING_INCDIR} \
+		--with-curl-lib=${STAGING_LIBDIR} \
+		" 
+
+inherit autotools pkgconfig
+
+LDFLAGS += " -L${STAGING_LIBDIR} -lcurl  -lboost_date_time -lboost_filesystem -lboost_iostreams -lboost_signals -lboost_thread-mt "
+CFLAGS += " -I${STAGING_INCDIR} -I${STAGING_LIBDIR}/gtk-2.0/include/ "
+
+do_configure_append() {
+        for i in `find . -name Makefile` ; do
+		sed -i s:I/usr/include:I${STAGING_INCDIR}:g $i
+	done
+}
+
+
+PARALLEL_MAKE = ""
+
+do_compile() {
+        oe_runmake 'CC=${CC}' 'LD=${LD}' 'CFLAGS=${CFLAGS}' \
+                   'ZLIB_INCLUDE=${STAGING_INCDIR}' \
+                   'ZLIB_LIBS=${STAGING_LIBDIR}' \
+		   'PNG_INCLUDE=${STAGING_INCDIR}' \	
+		   'PNG_LIBS=${STAGING_LIBDIR}'
+}
+
+
+PACKAGES =+ " libgnashamf libgnashbackend libgnashbase libgnashgeo libgnashgui libgnashplayer libgnashserver "
+
+FILES_libgnashamf = "${libdir}/libgnashamf-${PV}.so"
+FILES_libgnashbackend = "${libdir}/libgnashbackend-${PV}.so"
+FILES_libgnashbase = "${libdir}/libgnashbase-${PV}.so"
+FILES_libgnashgeo = "${libdir}/libgnashgeo-${PV}.so"
+FILES_libgnashgui = "${libdir}/libgnashgui-${PV}.so"
+FILES_libgnashplayer = "${libdir}/libgnashplayer-${PV}.so"
+FILES_libgnashserver = "${libdir}/libgnashserver-${PV}.so"
+
+do_stage() {
+        autotools_stage_all
+}
+
============================================================
--- packages/gsm/files/libgsmd-tool-fix.patch	e6e57fad53fa4e690e3cfa28074c95ba9f0b05dd
+++ packages/gsm/files/libgsmd-tool-fix.patch	e6e57fad53fa4e690e3cfa28074c95ba9f0b05dd
@@ -0,0 +1,19 @@
+Index: gsm/src/util/atcmd.c
+===================================================================
+--- gsm.orig/src/util/atcmd.c	2007-07-31 11:44:32.000000000 +0200
++++ gsm/src/util/atcmd.c	2007-07-31 11:46:44.000000000 +0200
+@@ -91,9 +91,11 @@
+ 				continue;
+ 			}
+ 			printf("STR=`%s'\n", buf);
++
++			/* this is a synchronous call for a passthrough
++			 * command */
++			lgsm_passthrough(lgsmh, buf, rbuf, &rlen);
++			printf("RSTR=`%s'\n", rbuf);
+ 		}
+-		/* this is a synchronous call for a passthrough command */
+-		lgsm_passthrough(lgsmh, buf, rbuf, &rlen);
+-		printf("RSTR=`%s'\n", rbuf);
+ 	}
+ }
============================================================
--- packages/gsm/files/mlbuf-static-bss.patch	90a37e73a035a661da81bebd930d78f4ee4bf923
+++ packages/gsm/files/mlbuf-static-bss.patch	90a37e73a035a661da81bebd930d78f4ee4bf923
@@ -0,0 +1,21 @@
+Index: gsm/src/gsmd/atcmd.c
+===================================================================
+--- gsm.orig/src/gsmd/atcmd.c	2007-07-31 11:44:51.000000000 +0200
++++ gsm/src/gsmd/atcmd.c	2007-07-31 11:45:09.000000000 +0200
+@@ -171,13 +171,14 @@
+ 	return -1;
+ }
+ 
++static char mlbuf[MLPARSE_BUF_SIZE];
++static int mlbuf_len;
++
+ static int ml_parse(const char *buf, int len, void *ctx)
+ {
+ 	struct gsmd *g = ctx;
+ 	struct gsmd_atcmd *cmd = NULL;
+-	static char mlbuf[MLPARSE_BUF_SIZE];
+ 	int rc = 0, final = 0;
+-	int mlbuf_len;
+ 
+ 	DEBUGP("buf=`%s'(%d)\n", buf, len);
+ 
============================================================
--- packages/gsm/files/sms-hacks.patch	050b68da310e9160382328247350003d4065017d
+++ packages/gsm/files/sms-hacks.patch	050b68da310e9160382328247350003d4065017d
@@ -0,0 +1,821 @@
+From 3e5832569d3b29a90b29b5d5ac0ffad4765bcff3 Mon Sep 17 00:00:00 2001
+From: Andrzej Zaborowski <balrog at zabor.org>
+Date: Fri, 6 Jul 2007 06:55:12 +0200
+Subject: [PATCH] SMS hacks 2
+
+---
+ include/gsmd/gsmd.h         |    8 ++-
+ include/gsmd/usock.h        |   35 ++++++++-
+ include/gsmd/vendorplugin.h |    2 +-
+ include/libgsmd/sms.h       |    2 +-
+ src/gsmd/atcmd.c            |  130 +++++++++++++++++++-------------
+ src/gsmd/sms_cb.c           |   19 ++++-
+ src/gsmd/usock.c            |  175 +++++++++++++++++++++++++++++++++++++-----
+ src/gsmd/vendor_ti.c        |    2 +-
+ src/libgsmd/libgsmd_sms.c   |   26 +++++--
+ 11 files changed, 320 insertions(+), 91 deletions(-)
+
+Index: gsm/include/gsmd/gsmd.h
+===================================================================
+--- gsm.orig/include/gsmd/gsmd.h	2007-07-31 11:44:32.000000000 +0200
++++ gsm/include/gsmd/gsmd.h	2007-07-31 11:46:44.000000000 +0200
+@@ -27,6 +27,7 @@
+ 	u_int32_t buflen;
+ 	u_int16_t id;
+ 	u_int8_t flags;
++	char *cur;
+ 	char buf[];
+ };
+ 
+@@ -36,6 +37,8 @@
+ 	LLPARSE_STATE_IDLE_LF,		/* LF before response (V1) */
+ 	LLPARSE_STATE_RESULT,		/* within result payload */
+ 	LLPARSE_STATE_RESULT_CR,	/* CR after result */
++	LLPARSE_STATE_PROMPT,		/* within a "> " prompt */
++	LLPARSE_STATE_PROMPT_SPC,	/* a complete "> " prompt */
+ 	LLPARSE_STATE_ERROR,		/* something went wrong */
+ 					/* ... idle again */
+ };
+@@ -52,6 +55,7 @@
+ 	unsigned int flags;
+ 	void *ctx;
+ 	int (*cb)(const char *buf, int len, void *ctx);
++	int (*prompt_cb)(void *ctx);
+ 	char *cur;
+ 	char buf[LLPARSE_BUF_SIZE];
+ };
+@@ -59,6 +63,7 @@
+ struct gsmd;
+ 
+ #define GSMD_FLAG_V0		0x0001	/* V0 responses to be expected from TA */
++#define GSMD_FLAG_SMS_FMT	0x0002	/* Use TEXT rather than PDU mode */
+ 
+ struct gsmd {
+ 	unsigned int flags;
+@@ -92,7 +97,8 @@
+ 
+ extern int gsmdlog_init(const char *path);
+ /* write a message to the daemons' logfile */
+-void __gsmd_log(int level, const char *file, int line, const char *function, const char *message, ...);
++void __gsmd_log(int level, const char *file, int line, const char *function, const char *message, ...)
++	__attribute__ ((__format__ (__printf__, 5, 6)));
+ /* macro for logging including filename and line number */
+ #define gsmd_log(level, format, args ...) \
+ 	__gsmd_log(level, __FILE__, __LINE__, __FUNCTION__, format, ## args)
+Index: gsm/include/gsmd/usock.h
+===================================================================
+--- gsm.orig/include/gsmd/usock.h	2007-07-31 11:44:32.000000000 +0200
++++ gsm/include/gsmd/usock.h	2007-07-31 11:46:44.000000000 +0200
+@@ -139,7 +139,7 @@
+ /* for SMS-SUBMIT, SMS-DELIVER */
+ enum gsmd_sms_tp_udhi {
+ 	GSMD_SMS_TP_UDHI_NO_HEADER	= (0<<6),
+-	GSMD_SMS_TP_UDHI_WTIH_HEADER	= (1<<6),
++	GSMD_SMS_TP_UDHI_WITH_HEADER	= (1<<6),
+ };
+ 
+ /* SMS delflg from 3GPP TS 07.05, Clause 3.5.4 */
+@@ -160,6 +160,34 @@
+ 	GSMD_PHONEBOOK_GET_SUPPORT	= 6,
+ };
+ 
++/* Type-of-Address, Numbering Plan Identification field */
++enum gsmd_toa_npi {
++	GSMD_TOA_NPI_UNKNOWN		= 0x0,
++	GSMD_TOA_NPI_ISDN		= 0x1,
++	GSMD_TOA_NPI_DATA		= 0x3,
++	GSMD_TOA_NPI_TELEX		= 0x4,
++	GSMD_TOA_NPI_NATIONAL		= 0x8,
++	GSMD_TOA_NPI_PRIVATE		= 0x9,
++	GSMD_TOA_NPI_ERMES		= 0xa,
++	GSMD_TOA_NPI_RESERVED		= 0xf,
++};
++
++/* Type-of-Address, Type-of-Number field */
++enum gsmd_toa_ton {
++	GSMD_TOA_TON_UNKNOWN		= (0<<4),
++	GSMD_TOA_TON_INTERNATIONAL	= (1<<4),
++	GSMD_TOA_TON_NATIONAL		= (2<<4),
++	GSMD_TOA_TON_NETWORK		= (3<<4),
++	GSMD_TOA_TON_SUBSCRIBER		= (4<<4),
++	GSMD_TOA_TON_ALPHANUMERIC	= (5<<4),
++	GSMD_TOA_TON_ABBREVIATED	= (6<<4),
++};
++
++/* Type-of-Address, bit 7 always 1 */
++enum gsmd_toa_reserved {
++	GSMD_TOA_RESERVED		= (1<<7),
++};
++
+ /* Length from 3GPP TS 04.08, Clause 10.5.4.7 */
+ 
+ #define GSMD_ADDR_MAXLEN	32
+@@ -269,6 +297,11 @@
+ 	char user_data[140];
+ } __attribute__ ((packed));
+ 
++struct gsmd_sms_send {
++	struct gsmd_addr addr;
++	struct gsmd_sms payload;
++};
++
+ /* Refer to GSM 07.07 subclause 8.12 */
+ struct gsmd_phonebook_readrg {
+ 	u_int8_t index1;
+Index: gsm/include/gsmd/vendorplugin.h
+===================================================================
+--- gsm.orig/include/gsmd/vendorplugin.h	2007-07-31 11:46:28.000000000 +0200
++++ gsm/include/gsmd/vendorplugin.h	2007-07-31 11:46:44.000000000 +0200
+@@ -12,7 +12,7 @@
+ struct gsmd_vendor_plugin {
+ 	struct llist_head list;
+ 	unsigned char *name;
+-	unsigned char *ext_chars;
++	char *ext_chars;
+ 	unsigned int num_unsolicit;
+ 	const struct gsmd_unsolicit *unsolicit;
+ 	int (*detect)(struct gsmd *g);
+Index: gsm/include/libgsmd/sms.h
+===================================================================
+--- gsm.orig/include/libgsmd/sms.h	2007-07-31 11:44:32.000000000 +0200
++++ gsm/include/libgsmd/sms.h	2007-07-31 11:46:44.000000000 +0200
+@@ -83,7 +83,7 @@
+ extern int lgsmd_sms_send(struct lgsm_handle *lh, const struct lgsm_sms *sms);
+ 
+ /* Write Message to Memory */
+-extern int lgsmd_sms_write(struct lgsm_handle *lh, 
++extern int lgsmd_sms_write(struct lgsm_handle *lh,
+ 		const struct lgsm_sms_write *sms_write);
+ 
+ /* Packing of 7-bit characters, refer to GSM 03.38 subclause 6.1.2.1.1 */
+Index: gsm/src/gsmd/atcmd.c
+===================================================================
+--- gsm.orig/src/gsmd/atcmd.c	2007-07-31 11:46:42.000000000 +0200
++++ gsm/src/gsmd/atcmd.c	2007-07-31 11:47:03.000000000 +0200
+@@ -82,9 +82,12 @@
+ 
+ 	switch (llp->state) {
+ 	case LLPARSE_STATE_IDLE:
++	case LLPARSE_STATE_PROMPT_SPC:
+ 		if (llp->flags & LGSM_ATCMD_F_EXTENDED) {
+ 			if (byte == '\r')
+ 				llp->state = LLPARSE_STATE_IDLE_CR;
++			else if (byte == '>')
++				llp->state = LLPARSE_STATE_PROMPT;
+ 			else {
+ #ifdef STRICT
+ 				llp->state = LLPARSE_STATE_ERROR;
+@@ -108,6 +111,8 @@
+ 		/* can we really go directly into result_cr ? */
+ 		if (byte == '\r')
+ 			llp->state = LLPARSE_STATE_RESULT_CR;
++		else if (byte == '>')
++			llp->state = LLPARSE_STATE_PROMPT;
+ 		else {
+ 			llp->state = LLPARSE_STATE_RESULT;
+ 			ret = llparse_append(llp, byte);
+@@ -127,6 +132,16 @@
+ 			memset(llp->buf, 0, LLPARSE_BUF_SIZE);
+ 		}
+ 		break;
++	case LLPARSE_STATE_PROMPT:
++		if (byte == ' ')
++			llp->state = LLPARSE_STATE_PROMPT_SPC;
++		else {
++			/* this was not a real "> " prompt */
++			llparse_append(llp, '>');
++			ret = llparse_append(llp, byte);
++			llp->state = LLPARSE_STATE_RESULT;
++		}
++		break;
+ 	case LLPARSE_STATE_ERROR:
+ 		break;
+ 	}
+@@ -147,6 +162,10 @@
+ 			/* FIXME: what to do with return value ? */
+ 			llp->cb(llp->buf, llp->cur - llp->buf, llp->ctx);
+ 		}
++
++		/* if a full SMS-style prompt was received, poke the select */
++		if (llp->state == LLPARSE_STATE_PROMPT_SPC)
++			llp->prompt_cb(llp->ctx);
+ 	}
+ 
+ 	return 0;
+@@ -178,7 +197,7 @@
+ {
+ 	struct gsmd *g = ctx;
+ 	struct gsmd_atcmd *cmd = NULL;
+-	int rc = 0, final = 0;
++	int rc = 0;
+ 
+ 	DEBUGP("buf=`%s'(%d)\n", buf, len);
+ 
+@@ -232,7 +251,6 @@
+ 			DEBUGP("error number %lu\n", err_nr);
+ 			if (cmd)
+ 				cmd->ret = err_nr;
+-			final = 1;
+ 			goto final_cb;
+ 		}
+ 		if (!strncmp(buf+1, "CMS ERROR", 9)) {
+@@ -242,7 +260,6 @@
+ 			DEBUGP("error number %lu\n", err_nr);
+ 			if (cmd)
+ 				cmd->ret = err_nr;
+-			final = 1;
+ 			goto final_cb;
+ 		}
+ 
+@@ -274,7 +291,7 @@
+ 
+ 			/* it might be a multiline response, so if there's a previous
+ 			   response, send out mlbuf and start afresh with an empty buffer */
+-			if (mlbuf[0] != 0) {
++			if (mlbuf_len) {
+ 				if (!cmd->cb) {
+ 					gsmd_log(GSMD_NOTICE, "command without cb!!!\n");
+ 				} else {
+@@ -282,8 +299,8 @@
+ 					cmd->resp = mlbuf;
+ 					rc = cmd->cb(cmd, cmd->ctx, cmd->resp);
+ 					DEBUGP("Clearing mlbuf\n");
+-					mlbuf[0] = 0;
+ 				}
++				mlbuf_len = 0;
+ 			}
+ 
+ 			/* the current buf will be appended to mlbuf below */
+@@ -302,7 +319,6 @@
+ 			DEBUGP("unspecified error\n");
+ 			if (cmd)
+ 				cmd->ret = 4;
+-			final = 1;
+ 			goto final_cb;
+ 		}
+ 
+@@ -311,7 +327,6 @@
+ 			/* Part of Case 'C' */
+ 			if (cmd)
+ 				cmd->ret = 0;
+-			final = 1;
+ 			goto final_cb;
+ 		}
+ 
+@@ -320,14 +335,12 @@
+ 		if (!strncmp(buf, "NO CARRIER", 11) ||
+ 		    ((g->flags & GSMD_FLAG_V0) && buf[0] == '3')) {
+ 			/* Part of Case 'D' */
+-			final = 1;
+ 			goto final_cb;
+ 		}
+ 
+ 		if (!strncmp(buf, "BUSY", 4) ||
+ 		    ((g->flags & GSMD_FLAG_V0) && buf[0] == '7')) {
+ 			/* Part of Case 'D' */
+-			final = 1;
+ 			goto final_cb;
+ 		}
+ 	}
+@@ -335,21 +348,13 @@
+ 	/* we reach here, if we are at an information response that needs to be
+ 	 * passed on */
+ 
+-	if (mlbuf[0] == 0) {
+-		DEBUGP("Filling mlbuf\n");
+-		strncat(mlbuf, buf, sizeof(mlbuf)-1);
+-	} else {
+-		DEBUGP("Appending buf to mlbuf\n");
+-		mlbuf_len = strlen(mlbuf);
+-		if (mlbuf_len+1 < sizeof(mlbuf)) {
+-			mlbuf[mlbuf_len] = '\n';
+-			mlbuf[mlbuf_len+1] = '\0';
+-			strncat(mlbuf, buf, sizeof(mlbuf)-mlbuf_len-2);
+-		} else {
+-			DEBUGP("response too big for mlbuf!!!\n");
+-			return -EFBIG;
+-		}
+-	}
++	if (mlbuf_len)
++		mlbuf[mlbuf_len ++] = '\n';
++	DEBUGP("Appending buf to mlbuf\n");
++	if (len > sizeof(mlbuf) - mlbuf_len)
++		len = sizeof(mlbuf) - mlbuf_len;
++	memcpy(mlbuf + mlbuf_len, buf, len);
++	mlbuf_len += len;
+ 	return 0;
+ 
+ final_cb:
+@@ -366,13 +371,16 @@
+ 	} else {
+ 		DEBUGP("Calling final cmd->cb()\n");
+ 		/* send final result code if there is no information response in mlbuf */
+-		if (mlbuf[0] == 0)
+-			cmd->resp = buf;
+-		else
++		if (mlbuf_len) {
+ 			cmd->resp = mlbuf;
++			mlbuf[mlbuf_len] = 0;
++			gsmd_log(GSMD_NOTICE,
++					"the text discarded is %s\n", buf);
++		} else
++			cmd->resp = buf;
+ 		rc = cmd->cb(cmd, cmd->ctx, cmd->resp);
+ 		DEBUGP("Clearing mlbuf\n");
+-		mlbuf[0] = 0;
++		mlbuf_len = 0;
+ 	}
+ 
+ 	/* remove from list of currently executing cmds */
+@@ -385,7 +393,15 @@
+ 		g->gfd_uart.when |= GSMD_FD_WRITE;
+ 
+ 	return rc;
+-}	
++}
++
++/* called when the modem asked for a new line of a multiline atcmd */
++static int atcmd_prompt(void *data)
++{
++	struct gsmd *g = data;
++
++	g->gfd_uart.when |= GSMD_FD_WRITE;
++}
+ 
+ /* callback to be called if [virtual] UART has some data for us */
+ static int atcmd_select_cb(int fd, unsigned int what, void *data)
+@@ -393,6 +409,7 @@
+ 	int len, rc;
+ 	static char rxbuf[1024];
+ 	struct gsmd *g = data;
++	char *cr;
+ 
+ 	if (what & GSMD_FD_READ) {
+ 		memset(rxbuf, 0, sizeof(rxbuf));
+@@ -416,8 +433,12 @@
+ 	if ((what & GSMD_FD_WRITE) && g->interpreter_ready) {
+ 		struct gsmd_atcmd *pos, *pos2;
+ 		llist_for_each_entry_safe(pos, pos2, &g->pending_atcmds, list) {
+-			len = strlen(pos->buf);
+-			rc = write(fd, pos->buf, strlen(pos->buf));
++			cr = strchr(pos->cur, '\n');
++			if (cr)
++				len = cr - pos->cur;
++			else
++				len = pos->buflen;
++			rc = write(fd, pos->cur, len);
+ 			if (rc == 0) {
+ 				gsmd_log%s
>>> DIFF TRUNCATED @ 16K






More information about the Openembedded-commits mailing list