ContextPhone prototyping software sources This software is licensed dual-licensed under the GPL version 2 or MIT. See the file COPYING.txt for details of the GPL. Some parts are licensed as LGPL and are indicated as such in the source code. Phone software ============== The software should be all right to build now, but I can't guarantee that you won't have any problems. It should build with the Series 60 SDKs 1.0, 1.2 and 2.0/2.1 and up (2.0 has wrong LIBs for the camera, so for the device build you need 2.1; for Visual Studio 6.0, you need 2.0) using both the SDK gcc and gcc-3.0 from http://www.inf.u-szeged.hu/symbian-gcc/ Note that you should be fairly familiar with C++ and Symbian to be able to do things with the source. Basic building instructions: - get Python for the S60 emulator / SDK - make a suitable directory X on the same drive as the SDK - untargzip the package in that directory 2nd edition (2.1 recommended) - get etelmm.h from http://www3.symbian.com/faq.nsf/0/4eabad2cfb23709d80256de20060ba30/$FILE/etelmm.h and put it in %EPOCROOT%\Epoc32\Include - go to X\missing_libs and run create_libs.pl - go to X\installv2 and run ..\build-v2.bat 1st edition To have full functionality, you'll need headers that are only available in the first released Sendo SDK. That is not available anymore. ContextPhone is buildable without, with some features disabled (listed below). - (v1 only) get and install the streaming audio input module from http://www.symbian.com/developer/development/syslibs.html#streamingaudio - if you have the Sendo SDK, copy the contents of the include directory into \sendo_inc - only with sendo: comment out #include in shareddatakeys.h - (without Sendo) - copy etelbgsm.h from the 9200 SDK to your SDK - make an etelgprs.h according to Symbian FAQ-0811, except that the TSmsBearer should be made public - copy from 6.1 SDK to 7.0s SDK amrmda.* smutset.* gsmumsg.* smsuaddr.* gsmupdu.* gsmucomp.* gsmuelem.* etools.* smuthdr.*, apdatahandler.h - comment out #include from the apdatahandler.h in 7.0s - you can build everything from \install with ..\build-v1.bat The bld.inf in the install/no_sendo_vX directory points to the mmp files and you can follow the trail from there on when it breaks. Using the Flickr upload ----------------------- To build with the flickr upload you need to create a file named flickr_keys.h in , with the following defines: #define FLICKR_API_KEY "" #define FLICKR_SHARED_SECRET "" What you lose without the Sendo headers ======================================= - Call recording on S60 v1 (it is not the recording per-se, but the ability to get remote party information on calls) - Detection of existing Bluetooth connections (affects negatively stability of the device Bluetooth stack) - Vibrating alerts (even sounds don't work, but could be made to work) Server side scripts =================== THIS IS OUT OF DATE. CONSULT THE CODE (http.cpp) FOR WHAT'S REALLY HAPPENING The upload of files uses POST but with an URL that includes some arguments in a GET-like fashion. Basically it sends: put3.pl?;;; For robustness the file is split into several pieces. The first piece is send like: ...put3.pl?C;Work;0;/Image.jpg and the following: ...put3.pl?A;Work;8000;/Image.jpg ...put3.pl?A;Work;16000;/Image.jpg etc. The piece size might be something else that 8000 :-). The actual file contents are in the POST body. So the is C for create and A for append, the offset is where the file should be continued (and is actually ignored for C). The pieces of the URL between the ';'s are urlencoded. That's how it works for images. The log files are uploaded exactly the same way, but in that case the is empty. The photos may not come with unique filenames, so such must be created to avoid overwriting previous ones. Our script works so that it creates a unique name based on the given filename with 'C', using a sequential naming convention, and appends to the latest file in that sequence with an 'A'. If you want to put the actual file in a database, you'll have to take some care since there's no end-of-file marking. So actually with our scripts a user might see a partial file if the timing is right (or should I say wrong). Mika Raento HIIT/BRU