PalmFAQ Version 0.7 Mon Feb 5 09:00:02 2001 This is the Palm Dev Forum Frequently Asked Questions List, posted monthly to the palm-dev-forum mailing list. Questions / comments / criticisms can be sent to adam@wozniak.dnsalias.org This document is maintained as a flat text file for widest accessability. It is available in three forms: http://wozniak.dnsalias.org/~adam/PalmFAQ.src (raw text) http://wozniak.dnsalias.org/~adam/PalmFAQ.txt (text with outgenerated index) http://wozniak.dnsalias.org/~adam/PalmFAQ.html (autogenerated html) ---- Index ==== Section 0: Questions about this list ==== Q0.1 Where is this list archived? Q0.2 What other sources of information exist? Q0.3 Is it OK to post "help wanted" or other job ads on the mailing list? ==== Section 1: Questions about Development Environments ==== Q1.1 What development environments and toolchains exist? Q1.2 What does the error "The registry key 'BDWM' cannot be found" mean? Q1.3 I've just downloaded the Palm emulator POSE. Where do I get a ROM image? Q Can someone send me one via email? Q1.4 I want to make color bitmaps in Metrowerks CodeWarrior, but the colors Q get all messed up or are all black. What's wrong? Q The CodeWarrior debugger keeps crashing. What's wrong? ==== Section 2: Questions about C / C++ ==== Q2.1 How do I declare a variable? How do I make a string? What's a pointer? Q What is a memory leak and how do I find it? Q What does the compile time error XXXX mean? Q2.2 How do I convert a floating point number to text? Q How do I convert text to a floating point number? ==== Section 3: Questions about the PalmOS API ==== Q3.1 What does the error value 5647 mean? Q3.2 Where are all the standard C library functions? Where's memcpy() ? Q3.3 How do I spawn a thread or fork a process? Q3.4 Are there any good references for the PalmOS API? ==== Section 4: Questions about Palm hardware Q4.1 How do I manually control the serial RTS/DTR lines? Q4.2 What Palm hardware exists? Q4.3 Is my Palm device compatable with a Frobnitz XYZZY? Q4.4 How can I generate a unique ID for each device? Q4.5 I want to do weird and bizarre things not supported by PalmOS. Q What kind of chips are used in Palm devices? Q Where can I find technical specifications for them? ==== Section 5: Questions about Palm software Q5.1 Where can I find a program that does XXXX? Q5.2 What data formats do the built in applications use? ==== Section 6: Questions about networking Q6.1 How do I make TCP/IP work in POSE? Q Why do I keep getting "iNet 1410" errors in POSE? Q6.2 How do I make a wireless TCP/IP connection on a Palm VII ? ---- End of Index ==== Section 0: Questions about this list ==== Q0.1 Where is this list archived? A0.1 Archives are incredibly useful sources of information. If you have a question, it is a good idea to search the archives first before posting. Most of the time the problem you're staring at blankly has been stared at blankly by others, and is somewhere in the archives. Archives are maintained at the following locations: http://www.escribe.com/findgroup.html?query=palm http://www.egroups.com/list/palm-dev-forum/info.html Q0.2 What other sources of information exist? A0.2 There are several resources on the web which can help you. Palm's "Getting Started" web page http://www.palmos.com/dev/started/ Wade's Pilot Programming FAQ http://www.wademan.com/Pilot/Program/FAQ.htm Warren Young's Pilot Programming FAQ (offshoot of Wade's) http://www.cyberport.com/~tangent/palm/faq/ The Palm Developer Knowledge Base http://oasis.palm.com/dev/kb/ Palm's Documentation page on palmos.com http://www.palmos.com/dev/tech/docs/ The Pilot-unix mailing list http://hcirisc.cs.binghamton.edu/mailman/listinfo/pilot-unix Hotdispatch developer exchange http://www.hotdispatch.com/palm Other forums hosted on news.palmos.com //news.palmos.com Other forums hosted on news.massena.com //news.massena.com Q0.3 Is it OK to post "help wanted" or other job ads on the mailing list? A0.3 This does occur from time to time. As long as it doesn't swamp the existing traffic it will probably be tolerated. Please make such posts brief. If you're replying, make sure you reply to the sender and NOT to the list at large. ==== Section 1: Questions about Development Environments ==== Q1.1 What development environments and toolchains exist? A1.1 Many. http://www.palmos.com/dev/tech/tools/ contains a comprehensive list. Q1.2 What does the error "The registry key 'BDWM' cannot be found" mean? A1.2 There was a problem with connecting to the emulator or device for debugging. This can have many causes. Fortunately, Metrowerks has fixed many of these problems so you don't see this error very often any more. See http://oasis.palm.com/dev/kb/faq/1790.cfm Q1.3 I've just downloaded the Palm emulator POSE. Where do I get a ROM image? Q Can someone send me one via email? A1.3 The quickest way is to download them from a real device using the RomTransfer.prc that came with POSE. You can get other ROM images by registering as a developer at http://www.palmos.com/dev/program/ and then going to the ROM Image Clickwrap area of the Provider Pavilion. It is a violation of license agreement for third parties to send them to you. Q1.4 I want to make color bitmaps in Metrowerks CodeWarrior, but the colors Q get all messed up or are all black. What's wrong? Q The CodeWarrior debugger keeps crashing. What's wrong? A1.4 You need to install a number of patches to get CodeWarrior R6 to do color bitmaps correctly. The patches below also fix a known debugging problem under Windows 2000. Go to http://www.palmos.com/dev/tech/tools/ and install the "Palm OS SDK version 3.5" From the same place also install "Palm OS SDK 3.5 Update 1" Go to ftp://palm:p1l0t@ftp3.metrowerks.com/ and get the debugger plugins Also, be sure to use a "bitmap family", as individual multicolor bitmaps don't work. I would also recommend looking into using PILRC as a post-build tool for adding bitmap resources to your .PRC files. PILRC is generally less troublesome to work with. ==== Section 2: Questions about C / C++ ==== Q2.1 How do I declare a variable? How do I make a string? What's a pointer? Q What is a memory leak and how do I find it? Q What does the compile time error XXXX mean? A2.1 The palm-dev-forum is not the best place to ask generic questions about the C or C++ programming languages. There are plenty of good sources of information. I recommend the following: Books: "The C Programming Language" Brian W. Kernighan and Dennis M Ritchie "The C++ Programming Language" Bjarne Stroustrup Online: Introductory C course by Steve Summit http://www.eskimo.com/~scs/cclass/cclass.html Comp.lang.c USENET FAQ http://www.eskimo.com/~scs/C-faq/top.html Comp.lang.c newsgroup comp.lang.c Detecting memory leaks in PalmPilot programs http://www.fifthgate.org/articles/palm_mem_leaks.html Q2.2 How do I convert a floating point number to text? Q How do I convert text to a floating point number? A2.2 See http://www.mv.com/users/wje/Ftp/Pilot/fp.c ==== Section 3: Questions about the PalmOS API ==== Q3.1 What does the error value 5647 mean? A3.1 Error values are two byte values. The most significant byte tells you what class the error came from. The least significant byte tells you the specific error in that class. Working through this example: first convert 5647 to the hex value 0x160F look for the corresponding class entry 0x1600 in ErrorBase.h note that this is the fileErrorClass find the header file which uses that error class (FileStream.h in this case) Convert the least significant byte 0x0F back to decimal 15 Look for the error in the error list of that header file. It should look something like this: #define fileErrIOError (fileErrorClass | 15) Q3.2 Where are all the standard C library functions? Where's memcpy() ? A3.2 The standard C library is not part of the PalmOS API. In most cases there are equivalent functions. Look at the "Standard IO" section of the "Palm OS SDK Reference". The list below may also help. It is not complete, but should give some clues as to where to start. memset() use MemSet(), but watch the order of arguments! memcpy() and memmove() use MemMove() sprintf() use StrPrintF() printf() look at WinDrawChars() strcmp() use StrCompare() malloc() look at MemHandleNew() and MemPtrNew() free() look at MemHandleFree() and MemPtrFree() Q3.3 How do I spawn a thread or fork a process? A3.3 You can't. From the developer's point of view, PalmOS is a single tasking, single threaded OS. See http://oasis.palm.com/dev/kb/faq/1053.cfm Q3.4 Are there any good references for the PalmOS API? A3.4 The following sources of information may be helpful. Books: "Palm Programming: The Developer's Guide" Neil Rhodes & Julie McKeehan (O'Reilly & Associates) Online: Palm's Documentation page on palmos.com http://www.palmos.com/dev/tech/docs/ ==== Section 4: Questions about Palm hardware Q4.1 How do I manually control the serial RTS/DTR lines? A4.1 There is no function in the PalmOS API which allows you to do this. People have suggested various approaches such as tweaking the dragonball registers, or building custom hardware. No one has yet posted a known working approach. Q4.2 What Palm hardware exists? A4.2 A comprehensive list of hardware, both Palm and other licensees, can be found at http://www.palmos.com/dev/tech/hardware/compare.html Q4.3 Is my Palm device compatable with a Frobnitz XYZZY? A4.3 It is impossible to keep a complete compatability list. Palm does not publish a compatability guide, and many of these types of questions go unanswered. The best thing to do is try it, and post any problems you encounter. Q4.4 How can I generate a unique ID for each device? A4.4 You can't easily. Here are some schemes which are commonly suggested, and might be "good enough" (with reasons why they're not perfect): HotSync User Name (can be changed by the user) Flash ID (see http://oasis.palm.com/dev/kb/faq/1099.cfm) (not all devices have flash IDs; they can be changed) DeviceID (Palm VII only; emulator has device ID 0) Q4.5 I want to do weird and bizarre things not supported by PalmOS. Q What kind of chips are used in Palm devices? Q Where can I find technical specifications for them? A4.5 Check the following URLS: Motorola Dragonball (MC68328) http://ebus.motorola.com/brdata/PDFDB/MICROPROCESSORS/32_BIT/68K-COLDFIRE/M683XX/MC68328UM.pdf Motorola Dragonball EZ (MC68EZ328) http://ebus.motorola.com/brdata/PDFDB/MICROPROCESSORS/32_BIT/68K-COLDFIRE/M683XX/MC68EZ328UM.pdf Motorola Dragonball VZ (MC68VZ328) http://ebus.motorola.com/brdata/PDFDB/MICROPROCESSORS/32_BIT/68K-COLDFIRE/M683XX/MC68VZ328UM.pdf Epson SED1375 http://www.erd.epson.com/vdc/pdf/1375/contents.html Epson SED1376 http://www.erd.epson.com/vdc/pdf/1376/contents.html AMD Am29LV160BB Fujitsu MBM29LV160B Toshiba TC58FVB160 ==== Section 5: Questions about Palm software Q5.1 Where can I find a program that does XXXX? A5.1 PalmGear is a good place to look. See http://www.palmgear.com Q5.2 What data formats do the built in applications use? A5.2 Source code for all the built in apps (memopad, datebook, etc...) can be found in the example source code that comes with the PalmOS3.5 SDK. ==== Section 6: Questions about networking Q6.1 How do I make TCP/IP work in POSE? Q Why do I keep getting "iNet 1410" errors in POSE? A6.1 Right click on POSE. Select Settings / Properties... Make sure the "Redirect NetLib calls to host TCP/IP" is checked. This tells POSE to use your PC for network communication. Recently Palm decided to change the IP address of the content-dev.palm.net development server. You may need to change it in your emulator. Go to preferences / wireless and make sure the Proxy is set to 209.247.202.106 Q6.2 How do I make a wireless TCP/IP connection on a Palm VII ? A6.2 You can't. The Palm VII transceiver only supports UDP over the wireless link, and most of the details are undocumented and hidden from the developer. You can, however, use INetLib to GET and POST http. See the "Palm OS SDK Reference" for more details on INetLib.