Send commitlog mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:

   1. r3289 -
      
trunk/src/target/OM-2007.2/artwork/themes/openmoko-standard-2/gtk-2.0/mokomediaplayer
      ([EMAIL PROTECTED])
   2. r3290 - in trunk/src/host/qemu-neo1973: . hw openmoko
      phonesim ([EMAIL PROTECTED])
   3. r3291 - trunk/src/host/qemu-neo1973 ([EMAIL PROTECTED])
   4. r3292 - trunk/src/host/qemu-neo1973/openmoko
      ([EMAIL PROTECTED])
--- Begin Message ---
Author: abraxa
Date: 2007-10-26 20:31:06 +0200 (Fri, 26 Oct 2007)
New Revision: 3289

Added:
   
trunk/src/target/OM-2007.2/artwork/themes/openmoko-standard-2/gtk-2.0/mokomediaplayer/background.png
Log:
Add background image that I forgot



Added: 
trunk/src/target/OM-2007.2/artwork/themes/openmoko-standard-2/gtk-2.0/mokomediaplayer/background.png
===================================================================
(Binary files differ)


Property changes on: 
trunk/src/target/OM-2007.2/artwork/themes/openmoko-standard-2/gtk-2.0/mokomediaplayer/background.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




--- End Message ---
--- Begin Message ---
Author: andrew
Date: 2007-10-26 21:26:08 +0200 (Fri, 26 Oct 2007)
New Revision: 3290

Modified:
   trunk/src/host/qemu-neo1973/Makefile
   trunk/src/host/qemu-neo1973/configure
   trunk/src/host/qemu-neo1973/hw/neo1973.c
   trunk/src/host/qemu-neo1973/openmoko/flash.sh
   trunk/src/host/qemu-neo1973/openmoko/neo1973.xml
   trunk/src/host/qemu-neo1973/phonesim/Makefile
Log:
Sanitise AT+COPS output, implement AT+CSCB.
Hook up phonesim to qemu's configure & Makefile, add a usage note.


Modified: trunk/src/host/qemu-neo1973/Makefile
===================================================================
--- trunk/src/host/qemu-neo1973/Makefile        2007-10-26 18:31:06 UTC (rev 
3289)
+++ trunk/src/host/qemu-neo1973/Makefile        2007-10-26 19:26:08 UTC (rev 
3290)
@@ -26,7 +26,7 @@
 
 LIBS+=$(AIOLIBS)
 
-all: $(TOOLS) $(DOCS) recurse-all
+all: $(TOOLS) $(DOCS) recurse-all $(MODEM)
 
 subdir-%: dyngen$(EXESUF)
        $(MAKE) -C $(subst subdir-,,$@) all
@@ -36,6 +36,10 @@
 qemu-img$(EXESUF): qemu-img.c cutils.c block.c block-raw.c block-cow.c 
block-qcow.c aes.c block-vmdk.c block-cloop.c block-dmg.c block-bochs.c 
block-vpc.c block-vvfat.c block-qcow2.c block-parallels.c
        $(CC) -DQEMU_TOOL $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $(LDFLAGS) 
$(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS)
 
+phonesim: phonesim/phonesim
+phonesim/phonesim:
+       $(MAKE) -C phonesim
+
 dyngen$(EXESUF): dyngen.c
        $(HOST_CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -o $@ $^
 

Modified: trunk/src/host/qemu-neo1973/configure
===================================================================
--- trunk/src/host/qemu-neo1973/configure       2007-10-26 18:31:06 UTC (rev 
3289)
+++ trunk/src/host/qemu-neo1973/configure       2007-10-26 19:26:08 UTC (rev 
3290)
@@ -103,6 +103,7 @@
 build_docs="no"
 gadgetfs="no"
 uname_release=""
+phonesim="no"
 
 # OS specific
 targetos=`uname -s`
@@ -304,6 +305,8 @@
         *)     echo "undefined SPARC architecture. Exiting";exit 1;;
       esac
   ;;
+  --enable-phonesim) phonesim="yes"
+  ;;
   esac
 done
 
@@ -956,6 +959,14 @@
   echo "#define CONFIG_GADGETFS 1" >> $config_h
 fi
 
+if test "$phonesim" = "yes" ; then
+  echo "MODEM=phonesim" >> $config_mak
+  echo "#undef INTERNAL_MODEM" >> $config_h
+else
+  echo "MODEM=" >> $config_mak
+  echo "#define INTERNAL_MODEM \"gnokiigsm\"" >> $config_h
+fi
+
 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ 
$config_h
 
 for target in $target_list; do

Modified: trunk/src/host/qemu-neo1973/hw/neo1973.c
===================================================================
--- trunk/src/host/qemu-neo1973/hw/neo1973.c    2007-10-26 18:31:06 UTC (rev 
3289)
+++ trunk/src/host/qemu-neo1973/hw/neo1973.c    2007-10-26 19:26:08 UTC (rev 
3290)
@@ -103,11 +103,13 @@
         neo_printf("Modem reset.\n");
 }
 
+#ifdef INTERNAL_MODEM
 static void neo_modem_switch_tick(void *opaque)
 {
     struct neo_board_s *s = (struct neo_board_s *) opaque;
     modem_enable(s->modem, 1);
 }
+#endif
 
 static void neo_modem_switch(void *opaque, int line, int level)
 {
@@ -380,10 +382,12 @@
 
 static void neo_gsm_setup(struct neo_board_s *s)
 {
+#ifdef INTERNAL_MODEM
     s->modem = modem_init();
     s->modem_timer = qemu_new_timer(vm_clock, neo_modem_switch_tick, s);
 
     s3c_uart_attach(s->cpu->uart[0], s->modem);
+#endif
 }
 
 static void neo_reset(void *opaque)

Modified: trunk/src/host/qemu-neo1973/openmoko/flash.sh
===================================================================
--- trunk/src/host/qemu-neo1973/openmoko/flash.sh       2007-10-26 18:31:06 UTC 
(rev 3289)
+++ trunk/src/host/qemu-neo1973/openmoko/flash.sh       2007-10-26 19:26:08 UTC 
(rev 3290)
@@ -142,4 +142,11 @@
 echo "    "time emulation starts in the original unmodified state.
 echo "    "Use [Enter] for AUX button, [Space] for POWER.
 echo "    "Append \'-usbdevice keyboard\' to attach a standard keyboard.
+echo "    "
+echo "    "If you\'ve configured qemu with --enable-phonesim \(requieres Qt4 
and
+echo "    "a C++ toolchain\), use the following commandline to run phonesim:
+echo \ \$ \(cd phonesim\; LD_LIBRARY_PATH=lib ./phonesim -gui 
../openmoko/neo1973.xml\)\&
+echo "    "The GUI is optional.  When phonesim is running, append
+echo "    "\'-serial tcp:localhost:12345\' to qemu invocation.  Security
+echo "    "note a la GLSA: phonesim listens on 0.0.0.0.
 echo

Modified: trunk/src/host/qemu-neo1973/openmoko/neo1973.xml
===================================================================
--- trunk/src/host/qemu-neo1973/openmoko/neo1973.xml    2007-10-26 18:31:06 UTC 
(rev 3289)
+++ trunk/src/host/qemu-neo1973/openmoko/neo1973.xml    2007-10-26 19:26:08 UTC 
(rev 3290)
@@ -14,6 +14,7 @@
      and hangup after 5 seconds -->
 <!-- Note: dialing 166 will accept the incoming call and hanup up after 5
      seconds-->
+<!-- Note: dialing 155 will elicit a 'BUSY' response from the recipient-->
 
 <!-- Initialize state variables -->
 
@@ -22,16 +23,16 @@
 
     <!-- Battery Capacity
     first value
-       0-powerd by battery
+       0-powered by battery
        1-battery connected, powered by charger
        2-no battery.
 
     second value is percentage battery remaining.
-       0-exahsted
+       0-exhausted
        1-99-partial charge
        100-fully charged.
      -->
-    <set name="BC" value="1,100"/>
+    <set name="BC" value="1,88"/>
 
     <!-- Signal Quality -->
     <set name="SQ" value="32,99"/>
@@ -91,7 +92,7 @@
     <set name="OP" value="${OP1}"/>
 
     <!-- Phone operator list -->
-    <set name="OPLIST" 
value="(2,${OP1},OP1,111)(1,${OP2},OP2,222),(1,${OP3},OP3,333)"/>
+    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
 
     <!-- Calling line identification presentation flag -->
     <set name="LIP" value="0"/>
@@ -178,6 +179,11 @@
     <!-- Format of cellular result codes -->
     <set name="RING" value="RING"/>
 
+    <!-- Select Cell Broadcast Message Types -->
+    <set name="CBMODE" value="0"/>
+    <set name="CBMIDS" value="1,4,10"/>
+    <set name="CBDCSS" value="3,4"/>
+
 <!-- Broadcast a cell location -->
 
 <unsolicited delay="500">+CBM: 
8807A200320111B8669A5D0641D9E1B47BDE68341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D100</unsolicited>
@@ -785,7 +791,7 @@
 <chat>
     <!-- Query supported operators, always reports -->
     <command>AT+COPS=?</command>
-    <response delay="2000">+COPS: ${OPLIST}(0,"Maybe Forbidden 
Net","MFN","3")(3,Competitor Net,COMNET,4)\nOK</response>
+    <response delay="2000">+COPS: ${OPLIST},(0,"Maybe Forbidden 
Net","MFN","34567"),(3,"Competitor Net","COMNET","44444")\nOK</response>
 </chat>
 
 <chat>
@@ -808,7 +814,7 @@
     <response>OK</response>
     <set name="OPMODE" value="1"/>
     <set name="OP" value="${OP1}"/>
-    <set name="OPLIST" 
value="(2,${OP1},OP1,111)(1,${OP2},OP2,222),(1,${OP3},OP3,333)"/>
+    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
 </chat>
 
 <chat>
@@ -818,6 +824,7 @@
     <set name="OPMODE" value="1"/>
     <set name="OP" value="${OP2}"/>
     <set name="OPLIST" 
value="(1,${OP1},OP1,111)(2,${OP2},OP2,222),(1,${OP3},OP3,333)"/>
+    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
 </chat>
 
 <chat>
@@ -826,7 +833,7 @@
     <response>OK</response>
     <set name="OPMODE" value="1"/>
     <set name="OP" value="${OP3}"/>
-    <set name="OPLIST" 
value="(1,${OP1},OP1,111)(1,${OP2},OP2,222),(2,${OP3},OP3,333)"/>
+    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
 </chat>
 
 <chat>
@@ -835,7 +842,7 @@
     <response>OK</response>
     <set name="OPMODE" value="1"/>
     <set name="OP" value="${OP1}"/>
-    <set name="OPLIST" 
value="(2,${OP1},OP1,111)(1,${OP2},OP2,222),(1,${OP3},OP3,333)"/>
+    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
 </chat>
 
 <chat>
@@ -844,7 +851,7 @@
     <response>OK</response>
     <set name="OPMODE" value="1"/>
     <set name="OP" value="${OP2}"/>
-    <set name="OPLIST" 
value="(1,${OP1},OP1,111)(2,${OP2},OP2,222),(1,${OP3},OP3,333)"/>
+    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
 </chat>
 
 <chat>
@@ -853,7 +860,7 @@
     <response>OK</response>
     <set name="OPMODE" value="1"/>
     <set name="OP" value="${OP3}"/>
-    <set name="OPLIST" 
value="(1,${OP1},OP1,111)(1,${OP2},OP2,222),(2,${OP3},OP3,333)"/>
+    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
 </chat>
 
 <chat>
@@ -1930,22 +1937,49 @@
     <response>OK</response>
 </chat>
 
+<!-- Call Progress Indication format -->
 <chat>
     <command>AT%CPI=?</command>
     <response>%CPI: (0-3)\nOK</response>
 </chat>
-
 <chat>
     <command>AT%CPI?</command>
     <response>%CPI: ${CPI}\nOK</response>
 </chat>
-
 <chat>
     <command>AT%CPI=*</command>
     <response>OK</response>
     <set name="CPI" value="*"/>
 </chat>
 
+<!-- Select Cell Broadcast Message Types -->
+<chat>
+    <command>AT+CSCB?</command>
+    <response>+CSCB: ${CBMODE},"${CBMIDS}","${CBDCSS}"\nOK</response>
+</chat>
+<chat>
+    <command>AT+CSCB=?</command>
+    <response>+CSCB: (0,1)\nOK</response>
+</chat>
+<chat>
+    <command>AT+CSCB=${MODE},"${MIDS}","${DCSS}"</command>
+    <response>OK</response>
+    <set name="CBMODE" value="${MODE}"/>
+    <set name="CBMIDS" value="${MIDS}"/>
+    <set name="CBDCSS" value="${DCSS}"/>
+</chat>
+<chat>
+    <command>AT+CSCB=${MODE},"${MIDS}"</command>
+    <response>OK</response>
+    <set name="CBMODE" value="${MODE}"/>
+    <set name="CBMIDS" value="${MIDS}"/>
+</chat>
+<chat>
+    <command>AT+CSCB=${MODE}</command>
+    <response>OK</response>
+    <set name="CBMODE" value="${MODE}"/>
+</chat>
+
 <!-- List of all supported commands -->
 
 <!-- All commands supported by TI Calypso -->

Modified: trunk/src/host/qemu-neo1973/phonesim/Makefile
===================================================================
--- trunk/src/host/qemu-neo1973/phonesim/Makefile       2007-10-26 18:31:06 UTC 
(rev 3289)
+++ trunk/src/host/qemu-neo1973/phonesim/Makefile       2007-10-26 19:26:08 UTC 
(rev 3290)
@@ -13,3 +13,4 @@
 clean: Makefile.phonesim lib/Makefile
        $(MAKE) -C lib clean
        $(MAKE) -f Makefile.phonesim clean
+       rm -f phonesim




--- End Message ---
--- Begin Message ---
Author: andrew
Date: 2007-10-27 03:18:44 +0200 (Sat, 27 Oct 2007)
New Revision: 3291

Added:
   trunk/src/host/qemu-neo1973/pty.c
Log:
Add a simple tool for forwarding the modem port between Neo & a PC.


Added: trunk/src/host/qemu-neo1973/pty.c
===================================================================
--- trunk/src/host/qemu-neo1973/pty.c   2007-10-26 19:26:08 UTC (rev 3290)
+++ trunk/src/host/qemu-neo1973/pty.c   2007-10-27 01:18:44 UTC (rev 3291)
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2007 OpenedHand, Ltd.
+ * Contact: <[EMAIL PROTECTED]>
+ *
+ * This file is licensed under the terms of GNU GPL v2.
+ *
+ * $ pty [<hostname|ip> <port>]
+ * Opens a new pseudo terminal and forwards data between standard input
+ * and the pty and between the pty and standard output.  If a hostname and
+ * port number are given, reads and writes to the socket instead of
+ * standard input or output.  Path to the slave pty is printed on standard
+ * error.
+ */
+#include <unistd.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+
+#define CHECK(val, name)       \
+       if (val == -1) {        \
+               fprintf(stderr, #name ": %s (%i)\n", strerror(errno), errno);\
+               return -errno;  \
+       }
+
+#define min(a, b)      ((a) < (b) ? (a) : (b))
+#define max(a, b)      ((a) > (b) ? (a) : (b))
+
+static int forward2(int in0, int out0, int in1, int out1) {
+       int inpos = 0, inlen = 0, outpos = 0, outlen = 0, ret, n;
+       fd_set rfds, wfds;
+       char in[0x100], out[0x100];
+
+       n = max(max(in0, in1), max(out0, out1)) + 1;
+       while (1) {
+               FD_ZERO(&rfds);
+               FD_ZERO(&wfds);
+               if (inlen < sizeof(in))
+                       FD_SET(in0, &rfds);
+               if (outlen < sizeof(out))
+                       FD_SET(in1, &rfds);
+               if (inlen)
+                       FD_SET(out0, &wfds);
+               if (outlen)
+                       FD_SET(out1, &wfds);
+               CHECK(select(n, &rfds, &wfds, 0, 0), select);
+
+               if (FD_ISSET(in0, &rfds)) {
+                       ret = (inpos + inlen) & (sizeof(in) - 1);
+                       ret = read(in0, in + ret,
+                                       sizeof(in) - max(ret, inlen));
+                       CHECK(ret, read(0));
+                       if (!ret)
+                               return 0;
+                       inlen += ret;
+               }
+               if (FD_ISSET(in1, &rfds)) {
+                       ret = (outpos + outlen) & (sizeof(out) - 1);
+                       ret = read(in1, out + ret,
+                                       sizeof(out) - max(ret, outlen));
+                       if (ret > 0)
+                               outlen += ret;
+               }
+               if (FD_ISSET(out0, &wfds)) {
+                       ret = write(out0, in + inpos,
+                                       min(sizeof(in) - inpos, inlen));
+                       CHECK(ret, write(pty));
+                       inlen -= ret;
+                       inpos += ret;
+                       inpos &= sizeof(in) - 1;
+               }
+               if (FD_ISSET(out1, &wfds)) {
+                       ret = write(out1, out + outpos,
+                                       min(sizeof(out) - outpos, outlen));
+                       CHECK(ret, write(1));
+                       outlen -= ret;
+                       outpos += ret;
+                       outpos &= sizeof(out) - 1;
+               }
+       }
+
+       return pause();
+}
+
+int main(int argc, char *argv[], char **envp) {
+       int sock, fd;
+       struct sockaddr_in sa;
+       struct hostent *hi;
+
+       fd = posix_openpt(O_RDWR | O_NOCTTY);
+       CHECK(fd, open);
+       CHECK(grantpt(fd), grantpt);
+       CHECK(unlockpt(fd), unlockpt);
+
+       fprintf(stderr, "%s\n", ptsname(fd));
+#if 0
+       /* Connect stdin & stdout with a pty */
+       CHECK(close(0), close(0));
+       CHECK(close(1), close(1));
+       CHECK(dup(fd), dup(0));
+       CHECK(dup(fd), dup(1));
+       return pause();
+#endif
+       if (argc != 3)
+               return forward2(0, fd, fd, 1);
+
+#if 0
+       /* Connect a sub-process with a pty */
+       for (len = 0, i = 1; i < argc; i ++)
+               len += strlen(argv[i]) + 4;
+       param = malloc(len);
+       strcpy(param, argv[1]);
+       for (i = 2; i < argc; i ++)
+               sprintf(param + strlen(param), " \"%s\"", argv[i]);
+       i = fileno(popen(param, O_RDWR));
+       CHECK(i, popen);
+       free(param);
+       return forward2(i, fd, fd, i);
+#endif
+
+       /* Connect a TCP socket with a pty */
+       hi = gethostbyname(argv[1]);
+       if (!hi) {
+               errno = h_errno;
+               CHECK(-1, gethostbyname);
+       }
+       sa.sin_family = hi->h_addrtype;
+       memcpy(&sa.sin_addr.s_addr, hi->h_addr_list[0], hi->h_length);
+       sa.sin_port = htons(strtol(argv[2], 0, 0));
+       sock = socket(AF_INET, SOCK_STREAM, 0);
+
+       CHECK(sock, socket);
+       CHECK(connect(sock, (struct sockaddr *) &sa, sizeof(sa)), connect);
+       return forward2(sock, fd, fd, sock);
+}




--- End Message ---
--- Begin Message ---
Author: andrew
Date: 2007-10-27 11:20:14 +0200 (Sat, 27 Oct 2007)
New Revision: 3292

Modified:
   trunk/src/host/qemu-neo1973/openmoko/neo1973.xml
Log:
Import more GSM functionality from troll.xml (GPRS, phonebook, SIM filesystem, 
etc).


Modified: trunk/src/host/qemu-neo1973/openmoko/neo1973.xml
===================================================================
--- trunk/src/host/qemu-neo1973/openmoko/neo1973.xml    2007-10-27 01:18:44 UTC 
(rev 3291)
+++ trunk/src/host/qemu-neo1973/openmoko/neo1973.xml    2007-10-27 09:20:14 UTC 
(rev 3292)
@@ -12,9 +12,9 @@
 <!-- Note: dialing 199 will cause a dialback to simulate an incoming call -->
 <!-- Note: dialing 177 will cause a dialback to simulate an incoming call,
      and hangup after 5 seconds -->
-<!-- Note: dialing 166 will accept the incoming call and hanup up after 5
+<!-- Note: dialing 166 will accept the incoming call and hangup up after 5
      seconds-->
-<!-- Note: dialing 155 will elicit a 'BUSY' response from the recipient-->
+<!-- Note: dialing 155 will elicit a 'BUSY' response from the recipient -->
 
 <!-- Initialize state variables -->
 
@@ -76,23 +76,67 @@
     <!-- Network registration presentation flag -->
     <set name="REG" value="1,0"/>
 
-    <!-- Mobile phone operator selection mode (0=auto, 1=manual) -->
+    <!-- GPRS network registration presentation flag -->
+    <set name="GREG" value="0"/>
+
+    <!-- Mobile phone operator selection mode (0=auto, 1=manual,
+         2=deregister, 3=set only <format>, 4=manual / automatic) -->
     <set name="OPMODE" value="0"/>
 
+    <!-- GCF Operator List, format <status(1:available,2:current,
+         3:forbidden)>,"<alphanum.operator name>","<short operator name>",
+         "<MCC/MNC num>"-->
     <!-- Name of mobile phone operator 1 -->
     <set name="OP1" value="QEMU Mobile"/>
+    <set name="OP1PLMN" value="26051"/>
+    <set name="OP1COPS" 
value="2,&quot;${OP1}&quot;,&quot;QEMU&quot;,&quot;${OP1PLMN}&quot;"/>
 
     <!-- Name of mobile phone operator 2 -->
-    <set name="OP2" value="OpenedHand Net"/>
+    <set name="OP2" value="Maybe Forbidden Net"/>
+    <set name="OP2PLMN" value="26052"/>
+    <set name="OP2COPS" 
value="3,&quot;${OP2}&quot;,&quot;MNT&quot;,&quot;${OP2PLMN}&quot;"/>
 
     <!-- Name of mobile phone operator 3 -->
-    <set name="OP3" value="OpenMoko Comm"/>
+    <set name="OP3" value="Competitor Net"/>
+    <set name="OP3PLMN" value="26053"/>
+    <set name="OP3COPS" 
value="3,&quot;${OP3}&quot;,&quot;CNT&quot;,&quot;${OP3PLMN}&quot;"/>
 
+    <set name="OP4" value="Blocked Net"/>
+    <set name="OP4PLMN" value="26054"/>
+    <set name="OP4COPS" 
value="3,&quot;${OP4}&quot;,&quot;BNT&quot;,&quot;${OP4PLMN}&quot;"/>
+
+    <set name="OP5" value="Inaccessible Net"/>
+    <set name="OP5PLMN" value="26055"/>
+    <set name="OP5COPS" 
value="3,&quot;${OP5}&quot;,&quot;INT&quot;,&quot;${OP5PLMN}&quot;"/>
+
+    <set name="OP6" value="OpenedHand GSM"/>
+    <set name="OP6PLMN" value="26056"/>
+    <set name="OP6COPS" 
value="1,&quot;${OP6}&quot;,&quot;PNT&quot;,&quot;${OP6PLMN}&quot;"/>
+
+    <set name="OP7" value="OpenMoko Telecomm"/>
+    <set name="OP7PLMN" value="26057"/>
+    <set name="OP7COPS" 
value="1,&quot;${OP7}&quot;,&quot;TNT&quot;,&quot;${OP7PLMN}&quot;"/>
+
+    <set name="OP8" value="HELLO MOKO"/>
+    <set name="OP8PLMN" value="26058"/>
+    <set name="OP8COPS" 
value="1,&quot;${OP8}&quot;,&quot;MBT&quot;,&quot;${OP8PLMN}&quot;"/>
+
+    <!-- Preferred Operators -->
+    <set name="PO1" value="1,2,26051"/>
+    <set name="PO2" value="2,2,26052"/>
+    <set name="PO3" value="3,2,26053"/>
+    <set name="PO4" value="4,2,26054"/>
+    <set name="PO5" value="5,2,26055"/>
+    <set name="PO6" value="6,2,26056"/>
+    <set name="PO7" value="7,2,26057"/>
+    <set name="PO8" value="8,2,26058"/>
+
     <!-- Name of current mobile phone operator -->
     <set name="OP" value="${OP1}"/>
 
     <!-- Phone operator list -->
-    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
+    <set name="OPLIST"
+         
value="(${OP1COPS}),(${OP2COPS}),(${OP3COPS}),(${OP4COPS}),(${OP5COPS}),(${OP6COPS}),(${OP7COPS}),(${OP8COPS})"/>
 
     <!-- Calling line identification presentation flag -->
     <set name="LIP" value="0"/>
@@ -120,6 +164,9 @@
     <set name="CF1C4" value="0"/>
     <set name="CF1C8" value="0"/>
 
+    <!-- Fixed Dialling presentation mode -->
+    <set name="FD" value="0"/>
+
     <!-- Unstructured service presentation mode -->
     <set name="USD" value="0"/>
 
@@ -160,6 +207,7 @@
 
     <!-- Name of the PIN that is required (eg. "PIN") -->
     <!-- For the moment DON'T set a pinname here. We don't want a PIN shipped 
with the release -->
+    <!-- READY: PIN/PUK not required; SIM PIN: PIN required; SIM PUK: PUK 
REQUIRED -->
     <set name="PINNAME" value="READY"/>
 
     <!-- Value of the PIN that is required -->
@@ -168,7 +216,16 @@
     <!-- pin protection status -->
     <set name="SC" value="0"/>
 
-    <!-- Value of the PIN that is required -->
+    <!-- Value of the PIN2 that is required -->
+    <set name="PIN2VALUE" value="3579"/>
+
+    <!-- Value of the PUK that is required -->
+    <set name="PUKVALUE" value="13243546"/>
+
+    <!-- Value of the PUK2 that is required -->
+    <set name="PUK2VALUE" value="08978675"/>
+
+    <!-- Value of the PSPIN that is required -->
     <set name="PSPINVALUE" value="4321"/>
     <!-- phone to sim pin protection status -->
     <set name="PS" value="0"/>
@@ -783,6 +840,25 @@
 </chat>
 
 <chat>
+    <!-- Query GPRS network registration result code presentation -->
+    <command>AT+CGREG?</command>
+    <response>+CGREG: ${GREG},0\nOK</response>
+</chat>
+
+<chat>
+    <!-- Query GPRS network registration result code presentation types -->
+    <command>AT+CGREG=?</command>
+    <response>+CGREG: (0-2)\nOK</response>
+</chat>
+
+<chat>
+    <!-- Set GPRS network registration result code presentation -->
+    <command>AT+CGREG=*</command>
+    <response>OK</response>
+    <set name="GREG" value="*"/>
+</chat>
+
+<chat>
     <!-- Query current operator selection -->
     <command>AT+COPS?</command>
     <response delay="500">+COPS: ${OPMODE},0,"${OP}"\nOK</response>
@@ -791,7 +867,7 @@
 <chat>
     <!-- Query supported operators, always reports -->
     <command>AT+COPS=?</command>
-    <response delay="2000">+COPS: ${OPLIST},(0,"Maybe Forbidden 
Net","MFN","34567"),(3,"Competitor Net","COMNET","44444")\nOK</response>
+    <response delay="2000">+COPS: ${OPLIST}\nOK</response>
 </chat>
 
 <chat>
@@ -801,6 +877,12 @@
 </chat>
 
 <chat>
+    <!-- Use MCC/MNC for operators -->
+    <command>AT+COPS=3,2</command>
+    <response delay="500">OK</response>
+</chat>
+
+<chat>
     <!-- Set automatic operator selection -->
     <command>AT+COPS=0*</command>
     <response>OK</response>
@@ -809,62 +891,166 @@
 </chat>
 
 <chat>
-    <!-- Set manual operator selection -->
+    <!-- Set manual operator selection OP1 (Alphanumeric) -->
     <command>AT+COPS=1,0,"${OP1}"</command>
     <response>OK</response>
     <set name="OPMODE" value="1"/>
     <set name="OP" value="${OP1}"/>
-    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
 </chat>
 
 <chat>
-    <!-- Set manual operator selection -->
-    <command>AT+COPS=1,0,"${OP2}"</command>
+    <!-- Set manual operator selection OP1 (MCC/MNC) -->
+    <command>AT+COPS=1,2,"${OP1PLMN}"</command>
     <response>OK</response>
     <set name="OPMODE" value="1"/>
-    <set name="OP" value="${OP2}"/>
-    <set name="OPLIST" 
value="(1,${OP1},OP1,111)(2,${OP2},OP2,222),(1,${OP3},OP3,333)"/>
-    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
+    <set name="OP" value="${OP1}"/>
 </chat>
 
 <chat>
-    <!-- Set manual operator selection -->
+    <!-- Refuse access to OP2 (Alphanumeric) -->
+    <command>AT+COPS=1,0,"${OP2}"</command>
+    <response>ERROR</response>
+</chat>
+<chat>
+    <!-- Refuse access to OP2 (MCC/MNC) -->
+    <command>AT+COPS=1,2,"${OP2PLMN}"</command>
+    <response>ERROR</response>
+</chat>
+<chat>
+    <!-- Refuse access to OP3 (Alphanumeric) -->
     <command>AT+COPS=1,0,"${OP3}"</command>
-    <response>OK</response>
+    <response>ERROR</response>
+</chat>
+<chat>
+    <!-- Refuse access to OP3 (MCC/MNC) -->
+    <command>AT+COPS=1,2,"${OP3PLMN}"</command>
+    <response>ERROR</response>
+</chat>
+<chat>
+    <!-- Refuse access to OP4 (Alphanumeric) -->
+    <command>AT+COPS=1,0,"${OP4}"</command>
+    <response>ERROR</response>
+</chat>
+<chat>
+    <!-- Refuse access to OP4 (MCC/MNC) -->
+    <command>AT+COPS=1,2,"${OP4PLMN}"</command>
+    <response>ERROR</response>
+</chat>
+
+<chat>
+    <!-- Set manual operator selection OP6 (Alphanumeric) -->
+    <command>AT+COPS=1,0,"${OP6}"</command>
+    <response delay="2000">OK</response>
     <set name="OPMODE" value="1"/>
-    <set name="OP" value="${OP3}"/>
-    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
+    <set name="OP" value="${OP6}"/>
 </chat>
 
 <chat>
-    <!-- Set manual operator selection -->
-    <command>AT+COPS=4,0,"${OP1}"</command>
-    <response>OK</response>
+    <!-- Set manual operator selection OP6 (MCC/MNC) -->
+    <command>AT+COPS=1,2,"${OP6PLMN}"</command>
+    <response delay="2000">OK</response>
     <set name="OPMODE" value="1"/>
-    <set name="OP" value="${OP1}"/>
-    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
+    <set name="OP" value="${OP6}"/>
 </chat>
 
 <chat>
-    <!-- Set manual operator selection -->
-    <command>AT+COPS=4,0,"${OP2}"</command>
+    <!-- Request preferred operators -->
+    <command>AT+CPOL?</command>
+    <response delay="2000">+CPOL: ${PO1}\n+CPOL: ${PO2}\n+CPOL: ${PO3}\n+CPOL: 
${PO4}\n+CPOL: ${PO5}\n+CPOL: ${PO6}\n+CPOL: ${PO7}\n+CPOL: 
${PO8}\nOK</response>
+</chat>
+
+<chat>
+    <!-- Request PLMNS descriptors -->
+    <command>AT+COPN</command>
+    <response delay="2000">+COPN: "${OP1PLMN}","${OP1}"\n+COPN: 
"${OP2PLMN}","${OP2}"\n+COPN: "${OP3PLMN}","${OP3}"\n+COPN: 
"${OP4PLMN}","${OP4}"\n+COPN: "${OP5PLMN}","${OP5}"\n+COPN: 
"${OP6PLMN}","${OP6}"\n+COPN: "${OP7PLMN}","${OP7}"\n+COPN: 
"${OP8PLMN}","${OP8}"\nOK</response>
+</chat>
+
+<chat>
+    <!-- Set preferred operator 1 -->
+    <command>AT+CPOL=1,2,*</command>
     <response>OK</response>
-    <set name="OPMODE" value="1"/>
-    <set name="OP" value="${OP2}"/>
-    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
+    <set name="PO1" value="1,2,${*}"/>
 </chat>
 
 <chat>
-    <!-- Set manual operator selection -->
-    <command>AT+COPS=4,0,"${OP3}"</command>
+    <!-- Set preferred operator 2 -->
+    <command>AT+CPOL=2,2,*</command>
     <response>OK</response>
-    <set name="OPMODE" value="1"/>
-    <set name="OP" value="${OP3}"/>
-    <set name="OPLIST" 
value="(2,&quot;${OP1}&quot;,&quot;OP1&quot;,&quot;11111&quot;),(1,&quot;${OP2}&quot;,&quot;OP2&quot;,&quot;22222&quot;),(1,&quot;${OP3}&quot;,&quot;OP3&quot;,&quot;33333&quot;)"/>
+    <set name="PO2" value="2,2,${*}"/>
 </chat>
 
 <chat>
+    <!-- Set preferred operator 3 -->
+    <command>AT+CPOL=3,2,*</command>
+    <response>OK</response>
+    <set name="PO3" value="3,2,${*}"/>
+</chat>
+
+<chat>
+    <!-- Set preferred operator 4 -->
+    <command>AT+CPOL=4,2,*</command>
+    <response>OK</response>
+    <set name="PO4" value="4,2,${*}"/>
+</chat>
+
+<chat>
+    <!-- Set preferred operator 5 -->
+    <command>AT+CPOL=5,2,*</command>
+    <response>OK</response>
+    <set name="PO5" value="5,2,${*}"/>
+</chat>
+
+<chat>
+    <!-- Set preferred operator 6 -->
+    <command>AT+CPOL=6,2,*</command>
+    <response>OK</response>
+    <set name="PO6" value="6,2,${*}"/>
+</chat>
+
+<chat>
+    <!-- Set preferred operator 7 -->
+    <command>AT+CPOL=7,2,*</command>
+    <response>OK</response>
+    <set name="PO7" value="7,2,${*}"/>
+</chat>
+
+<chat>
+    <!-- Set preferred operator 8 -->
+    <command>AT+CPOL=8,2,*</command>
+    <response>OK</response>
+    <set name="PO8" value="8,2,${*}"/>
+</chat>
+
+<!-- FIXED DIALLING LOCKS -->
+<chat>
+    <!-- Query available facility lock -->
+    <command>AT+CLCK="FD",2</command>
+    <response>+CLCK: ${FD}\nOK</response>
+</chat>
+
+<chat>
     <!-- Query available facility locks -->
+    <command>AT+CLCK="FD",0,"${PIN2VALUE}"</command>
+    <response>OK</response>
+    <set name="FD" value="0"/>
+</chat>
+
+<chat>
+    <!-- Query available facility locks -->
+    <command>AT+CLCK="FD",1,"${PIN2VALUE}"</command>
+    <response>OK</response>
+    <set name="FD" value="1"/>
+</chat>
+
+<chat>
+    <!-- Query available facility locks -->
+    <command>AT+CLCK="FD",*</command>
+    <response>ERROR</response>
+</chat>
+
+<!-- SIM CARD LOCKS -->
+<chat>
+    <!-- Query available facility locks -->
     <command>AT+CLCK=?</command>
     <response>+CLCK: PS(8),SC(8)\nOK</response>
 </chat>
@@ -1035,6 +1221,20 @@
     <set name="CF0C1" value="1"/>
     <set name="CF0C1N" value="*"/>
 </chat>
+<chat>
+    <!-- Set call forwarding number international (voice, unconditional) -->
+    <command>AT+CCFC=0,3,*,145,1</command>
+    <response>OK</response>
+    <set name="CF0C1" value="1"/>
+    <set name="CF0C1N" value="*"/>
+</chat>
+<chat>
+    <!-- Set call forwarding number national (voice, unconditional) -->
+    <command>AT+CCFC=0,3,*,129,1</command>
+    <response>OK</response>
+    <set name="CF0C1" value="1"/>
+    <set name="CF0C1N" value="*"/>
+</chat>
 
 <chat>
     <!-- Set call forwarding number (voice, when busy) -->
@@ -1043,8 +1243,54 @@
     <set name="CF1C1" value="1"/>
     <set name="CF1C1N" value="*"/>
 </chat>
+<chat>
+    <!-- Set call forwarding number international (voice, when busy) -->
+    <command>AT+CCFC=1,3,*,145,1</command>
+    <response>OK</response>
+    <set name="CF1C1" value="1"/>
+    <set name="CF1C1N" value="*"/>
+</chat>
+<chat>
+    <!-- Set call forwarding number national (voice, when busy) -->
+    <command>AT+CCFC=1,3,*,129,1</command>
+    <response>OK</response>
+    <set name="CF1C1" value="1"/>
+    <set name="CF1C1N" value="*"/>
+</chat>
 
 <chat>
+    <!-- Set call forwarding number international (voice, no reply) -->
+    <command>AT+CCFC=2,3,*,145,1</command>
+    <response>OK</response>
+    <set name="CF2C1" value="1"/>
+    <set name="CF2C1N" value="*"/>
+</chat>
+
+<chat>
+    <!-- Set call forwarding number (voice, no reply) -->
+    <command>AT+CCFC=2,3,*,129,1</command>
+    <response>OK</response>
+    <set name="CF2C1" value="1"/>
+    <set name="CF2C1N" value="*"/>
+</chat>
+
+<chat>
+    <!-- Set call forwarding number international (voice, not reachable) -->
+    <command>AT+CCFC=3,3,*,145,1</command>
+    <response>OK</response>
+    <set name="CF3C1" value="1"/>
+    <set name="CF3C1N" value="*"/>
+</chat>
+
+<chat>
+    <!-- Set call forwarding number (voice, not reachable) -->
+    <command>AT+CCFC=3,3,*,129,1</command>
+    <response>OK</response>
+    <set name="CF3C1" value="1"/>
+    <set name="CF3C1N" value="*"/>
+</chat>
+
+<chat>
     <!-- Set call forwarding number (data, unconditional) -->
     <command>AT+CCFC=0,3,*,,2</command>
     <response>OK</response>
@@ -1221,7 +1467,7 @@
 <chat>
     <!-- Query call waiting -->
     <command>AT+CCWA=1,2</command>
-    <response>+CCWA: ${CWA_V},1\n+CCWA: ${CWA_D},2\n+CCWA: 
${CWA_F},4\nOK</response>
+    <response delay="2000">+CCWA: ${CWA_V},1\n+CCWA: ${CWA_D},2\n+CCWA: 
${CWA_F},4\nOK</response>
 </chat>
 
 <chat>
@@ -1237,55 +1483,55 @@
 </chat>
 
 <!-- Disable call waiting -->
-<chat><command>AT+CCWA=1,0,1</command><response>OK</response>
+<chat><command>AT+CCWA=1,0,1</command><response delay="1000">OK</response>
     <set name="CWA_V" value="0"/>
 </chat>
-<chat><command>AT+CCWA=1,0,2</command><response>OK</response>
+<chat><command>AT+CCWA=1,0,2</command><response delay="1000">OK</response>
     <set name="CWA_D" value="0"/>
 </chat>
-<chat><command>AT+CCWA=1,0,3</command><response>OK</response>
+<chat><command>AT+CCWA=1,0,3</command><response delay="1000">OK</response>
     <set name="CWA_V" value="0"/>
     <set name="CWA_D" value="0"/>
 </chat>
-<chat><command>AT+CCWA=1,0,4</command><response>OK</response>
+<chat><command>AT+CCWA=1,0,4</command><response delay="1000">OK</response>
     <set name="CWA_F" value="0"/>
 </chat>
-<chat><command>AT+CCWA=1,0,5</command><response>OK</response>
+<chat><command>AT+CCWA=1,0,5</command><response delay="1000">OK</response>
     <set name="CWA_V" value="0"/>
     <set name="CWA_F" value="0"/>
 </chat>
-<chat><command>AT+CCWA=1,0,6</command><response>OK</response>
+<chat><command>AT+CCWA=1,0,6</command><response delay="1000">OK</response>
     <set name="CWA_D" value="0"/>
     <set name="CWA_F" value="0"/>
 </chat>
-<chat><command>AT+CCWA=1,0,7</command><response>OK</response>
+<chat><command>AT+CCWA=1,0,7</command><response delay="1000">OK</response>
     <set name="CWA_V" value="0"/>
     <set name="CWA_D" value="0"/>
     <set name="CWA_F" value="0"/>
 </chat>
 <!-- Enable call waiting -->
-<chat><command>AT+CCWA=1,1,1</command><response>OK</response>
+<chat><command>AT+CCWA=1,1,1</command><response delay="1000">OK</response>
     <set name="CWA_V" value="1"/>
 </chat>
-<chat><command>AT+CCWA=1,1,2</command><response>OK</response>
+<chat><command>AT+CCWA=1,1,2</command><response delay="1000">OK</response>
     <set name="CWA_D" value="1"/>
 </chat>
-<chat><command>AT+CCWA=1,1,3</command><response>OK</response>
+<chat><command>AT+CCWA=1,1,3</command><response delay="1000">OK</response>
     <set name="CWA_V" value="1"/>
     <set name="CWA_D" value="1"/>
 </chat>
-<chat><command>AT+CCWA=1,1,4</command><response>OK</response>
+<chat><command>AT+CCWA=1,1,4</command><response delay="1000">OK</response>
     <set name="CWA_F" value="1"/>
 </chat>
-<chat><command>AT+CCWA=1,1,5</command><response>OK</response>
+<chat><command>AT+CCWA=1,1,5</command><response delay="1000">OK</response>
     <set name="CWA_V" value="1"/>
     <set name="CWA_F" value="1"/>
 </chat>
-<chat><command>AT+CCWA=1,1,6</command><response>OK</response>
+<chat><command>AT+CCWA=1,1,6</command><response delay="1000">OK</response>
     <set name="CWA_D" value="1"/>
     <set name="CWA_F" value="1"/>
 </chat>
-<chat><command>AT+CCWA=1,1,7</command><response>OK</response>
+<chat><command>AT+CCWA=1,1,7</command><response delay="1000">OK</response>
     <set name="CWA_V" value="1"/>
     <set name="CWA_D" value="1"/>
     <set name="CWA_F" value="1"/>
@@ -1415,7 +1661,7 @@
 <chat>
     <!-- Check for which PIN is required -->
     <command>AT+CPIN?</command>
-    <response>+CPIN: ${PINNAME}\nOK</response>
+    <response delay="3000">+CPIN: ${PINNAME}\nOK</response>
 </chat>
 
 <chat>
@@ -1426,23 +1672,88 @@
 </chat>
 
 <chat>
-    <!-- Change PIN (success) -->
+    <!-- Change PIN using PUK (success) -->
     <!-- Meaningless command... can't work out use in hardware, use CPWD 
instead -->
     <!-- first is puck instead. -->
-    <command>AT+CPIN="12345678","*"</command>
+    <command>AT+CPIN="${PUKVALUE}","*"</command>
     <response>+CPIN: READY\nOK</response>
     <set name="PINVALUE" value="${*}"/>
     <set name="PINNAME" value="READY"/>
 </chat>
 
 <chat>
-    <!-- Enter PIN (failure) -->
-    <command>AT+CPIN*</command>
+    <!-- Enter PIN (PUK failure when PINNAME was "SIM PUK" from start) -->
+    <command>AT+CPIN="*","*"</command>
     <response>+CPIN: SIM PUK\nERROR</response>
     <set name="PINNAME" value="SIM PUK"/>
 </chat>
 
 <chat>
+    <!-- Enter PIN (failure) -->
+    <command>AT+CPIN=*</command>
+    <response>+CPIN: SIM PIN\nERROR</response>
+    <set name="PINNAME" value="SIM PIN"/>
+    <switch name="pinretry1"/>
+</chat>
+
+<state name="pinretry1">
+
+    <chat>
+        <!-- Enter PIN (success) -->
+        <command>AT+CPIN="${PINVALUE}"</command>
+        <response>+CPIN: READY\nOK</response>
+        <set name="PINNAME" value="READY"/>
+        <switch name="default"/>
+    </chat>
+
+    <chat>
+        <!-- Change PIN using PUK (success) -->
+        <command>AT+CPIN="${PUKVALUE}","*"</command>
+        <response>+CPIN: READY\nOK</response>
+        <set name="PINVALUE" value="${*}"/>
+        <set name="PINNAME" value="READY"/>
+        <switch name="default"/>
+    </chat>
+
+    <chat>
+        <!-- Enter PIN (failure) -->
+        <command>AT+CPIN=*</command>
+        <response>+CPIN: SIM PIN\nERROR</response>
+        <set name="PINNAME" value="SIM PIN"/>
+        <switch name="pinretry2"/>
+    </chat>
+
+</state>
+
+<state name="pinretry2">
+
+    <chat>
+        <!-- Enter PIN (success) -->
+        <command>AT+CPIN="${PINVALUE}"</command>
+        <response>+CPIN: READY\nOK</response>
+        <set name="PINNAME" value="READY"/>
+        <switch name="default"/>
+    </chat>
+
+    <chat>
+        <!-- Change PIN using PUK (success) -->
+        <command>AT+CPIN="${PUKVALUE}","*"</command>
+        <response>+CPIN: READY\nOK</response>
+        <set name="PINVALUE" value="${*}"/>
+        <set name="PINNAME" value="READY"/>
+        <switch name="default"/>
+    </chat>
+
+    <chat>
+        <!-- Enter PIN (failure) -->
+        <command>AT+CPIN=*</command>
+        <response>+CPIN: SIM PUK\nERROR</response>
+        <set name="PINNAME" value="SIM PUK"/>
+    </chat>
+
+</state>
+
+<chat>
     <!-- Query battery charge -->
     <command>AT+CBC</command>
     <response>+CBC: ${BC}\nOK</response>
@@ -1654,6 +1965,62 @@
     <response>+CPBW: (1-2),32,(129,145),16\nOK</response>
 </chat>
 
+<!-- Phonebook commands are implemented in the phone simulator source code -->
+<phonebook name="SM" size="150">
+    <entry index="1" number="123" name="ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF"/>
+    <entry index="2" number="24685" name="Adam Zucker/m"/>
+    <entry index="3" number="48759" name="Bradley Young"/>
+    <entry index="4" number="45575" name="Chuck Woodbury/w"/>
+    <entry index="5" number="57968" name="Chuck Woodbury/h"/>
+    <entry index="6" number="48959" name="Darren Umber"/>
+    <entry index="7" number="48759" name="Courtney Umber/h"/>
+    <entry index="8" number="42887" name="Courtney Umber/m"/>
+    <entry index="9" number="87683" name="Evan Ungar"/>
+    <entry index="10" number="15798" name="Frank Twedell"/>
+    <entry index="11" number="12497" name="Greg Smith/w"/>
+    <entry index="12" number="89765" name="Greg Smith/m"/>
+    <entry index="13" number="12498" name="Greg Smith/o"/>
+    <entry index="14" number="34967" name="Greg Smith/h"/>
+    <entry index="15" number="57682" name="Henry Ross/m"/>
+    <entry index="16" number="78952" name="Henry Ross/h"/>
+    <entry index="17" number="44585" name="Ivan Prischmann"/>
+    <entry index="19" number="13553" name="Jack Odegard/h"/>
+    <entry index="20" number="49755" name="Jack Odegard/m"/>
+    <entry index="21" number="57683" name="Rachel Odegard"/>
+    <entry index="22" number="14573" name="Kevin Norris"/>
+    <entry index="23" number="48468" name="Logan Minkoff"/>
+    <entry index="24" number="48468" name="Tracy Minkoff"/>
+    <entry index="25" number="89624" name="Matthew LeBlanc"/>
+    <entry index="26" number="57439" name="Nathan Kelly/m"/>
+    <entry index="27" number="13596" name="Nathan Kelly/w"/>
+    <entry index="28" number="18279" name="Paul Jacobs"/>
+    <entry index="29" number="62755" name="Robert Irving"/>
+    <entry index="30" number="13466" name="Sean Hunt/h"/>
+    <entry index="31" number="59786" name="Sean Hunt/m"/>
+    <entry index="32" number="13664" name="Thomas Grayson"/>
+    <entry index="33" number="77957" name="Victor Frey"/>
+    <entry index="34" number="14535" name="Wade Emerson"/>
+    <entry index="35" number="98735" name="Monica Emerson"/>
+    <entry index="36" number="65865" name="Dorathy Foster"/>
+    <entry index="37" number="66573" name="Gina Haylock/m"/>
+    <entry index="38" number="33846" name="Gina Haylock/w"/>
+    <entry index="39" number="35933" name="BuyIt"/>
+    <entry index="40" number="2468DD" name="Wildcard"/>
+    <entry index="101" number="10101" name="GSM Test"/>
+</phonebook>
+
+<phonebook name="FD" size="20">
+    <entry index="1" number="+1357924680" name="FDN111"/>
+    <entry index="2" number="24680" name="FDN222"/>
+    <entry index="3" number="+123465678901234567890" name="FDN333"/>
+    <entry index="4" number="112" name="Emergency"/>
+</phonebook>
+
+<phonebook name="SN" size="50">
+    <entry index="1" number="013" name="Directory Assistance"/>
+    <entry index="2" number="121" name="Call Minding"/>
+</phonebook>
+
 <!-- GSM 07.05: SMS related commands -->
 
 <chat>
@@ -1884,6 +2251,12 @@
 </chat>
 
 <chat>
+    <!-- Global object identification (ignored) -->
+    <command>AT+GOI</command>
+    <response>OK</response>
+</chat>
+
+<chat>
     <!-- Character framing (ignored) -->
     <command>AT+ICF*</command>
     <response>OK</response>
@@ -2300,19 +2673,7 @@
 +ILRR
 +IPR
 +FCLASS
-+VBT
-+VCID
-+VGR
-+VGT
-+VIP
-+VIT
-+VLS
-+VRX
-+VSM
-+VTS
-+VTD
-+VTX
-*ECAM
+%VTS
 A
 D
 E
@@ -2453,4 +2814,66 @@
 
 </toolkit>
 
+<!-- SIM filesystem definition, based on standard test strings
+     presented in GSM 11.10-4.  This is primarily intended for
+     testing icon definitions within SIM toolkit applications -->
+
+<filesystem>
+
+<file name="EFphase">
+    03
+</file>
+
+<file name="EFimsi">
+    08 09 10 10 10 32 54 76 98
+</file>
+
+<file name="EFimg" recordsize="20">
+    01 2E 28 11 4F 01 00 00 00 E8 FF FF FF FF FF FF FF FF FF FF
+    01 08 08 21 4F 02 00 00 00 1F FF FF FF FF FF FF FF FF FF FF
+    01 18 10 11 4F 03 00 00 00 32 FF FF FF FF FF FF FF FF FF FF
+    01 08 08 11 4F 04 00 00 00 0A FF FF FF FF FF FF FF FF FF FF
+    01 05 05 11 4F 05 00 00 00 08 FF FF FF FF FF FF FF FF FF FF
+</file>
+
+<file name="EFimg1">
+    2E 28 00 00 00 00 00 00 00 01 FF 80 00 00 00 0F
+    FF 00 00 00 00 77 FE 00 00 00 01 BF F8 00 00 00
+    06 FF E0 00 00 00 1A 03 80 00 00 00 6B F6 BC 00
+    00 01 AF D8 38 00 00 06 BF 60 20 00 00 1A FD 80
+    40 00 00 6B F6 00 80 00 01 A0 1F 02 00 00 06 FF
+    E4 04 00 00 1B FF 90 10 00 00 6D EE 40 40 00 01
+    BF F9 01 00 00 6F FF E4 04 00 00 1B FF 90 10 00
+    00 6F FE 40 40 00 01 BF F9 01 00 00 06 FF E6 04
+    00 00 1B FF 88 10 00 00 6F FE 20 40 00 01 BF F8
+    66 00 00 06 FF E0 F0 00 00 1B FF 80 80 00 00 7F
+    FE 00 00 00 03 00 0C 00 00 00 1F FF F8 00 00 00
+    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+    1C 21 08 44 EE 00 48 C4 31 92 20 01 25 11 45 50
+    80 07 14 45 15 43 80 12 71 1C 4D 08 00 4A 24 89
+    32 20 01 C8 9E 24 4E E0
+</file>
+
+<file name="EFimg2">
+    08 08 02 03 00 16 AA AA 80 02 85 42 81 42 81 42
+    81 52 80 02 AA AA FF 00 00 00 FF 00 00 00 FF
+</file>
+
+<file name="EFimg3">
+    18 10 FF FF FF 80 00 01 80 00 01 80 00 01 8F 3C
+    F1 89 20 81 89 20 81 89 20 F1 89 20 11 89 20 11
+    89 20 11 8F 3C F1 80 00 01 80 00 01 80 00 01 FF
+    FF FF
+</file>
+
+<file name="EFimg4">
+    08 08 FF 03 A5 99 99 A5 C3 FF
+</file>
+
+<file name="EFimg5">
+    05 05 FE EB BF FF FF FF
+</file>
+
+</toolkit>
+
 </simulator>




--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to