RE: Can't use Palm device after emulator?
The emulator can be configured to use one of your PC's serial ports as the serial port on the emulated Palm. If your cradle and real device are plugged into the same port while the emulator is still running you'll get that conflict. To solve this problem you can close the emulator before hotsyncing or debugging on the real device. Alternately, you can configure the emulator to not use a serial port at all by right-clicking the emulator, choosing Properties and changing Serial Port to None. If the emulator is configured to a different port than the cradle it's still possible that you're getting a conflict. On a typically configured PC, COM1 and COM3 share an interrupt, and COM2 and COM4 also share an interrupt. If your cradle is on COM1 and your emulator is using COM3, the two probably can't share that interrupt. If this is the problem, the solutions are the same, or you can reconfigure the emulator to use a port which doesn't conflict with the cradle. Good luck! -Bob Whiteman -Original Message- From: DIAMOND JEFF To: Palm Developer Forum Sent: 8/3/2000 10:46 PM Subject: Can't use Palm device after emulator? I'm currently using the most uptodate versions of CodeWarrior and the Debugger (Update 1, patch, etc.) What I've found is that if I'm doing a programming session using POSE, nomatter how cleanly I exit the session, when I try to THEN try out my program on a real Palm, I get a Serial port is busy when it starts the download. The only thing that seems to remedy this is to reboot my computer. In fact, after I've done the POSE debugging, I can't even do a hotsync without the same effect. What's tying up the serial port? Thanks folks! - Jeff -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Clipper mini-font
Thanks for the warning. I'm looking into the legalities and opportunities right now. If it turns out that Palm won't give away, license or otherwise give permission to use the fonts I'll still have the experience of how my program /could/ look. I'm sure there are freeware fonts and such resources somewhere on the net. I'm open to suggestions. :) -Bob Whiteman -Original Message- From: Scott Johnson (Bellevue) To: Palm Developer Forum Sent: 8/3/2000 4:36 PM Subject: RE: Clipper mini-font From: Bob Whiteman [mailto:[EMAIL PROTECTED] I was able to break out 16 fonts from Clipper, including the one I was interested in. Be careful Bob -- extracting the Clipper 'NFNT' resources does work fine in a technical sense, but when I inquired about this several months ago, I was told by a Palm representative that it wouldn't be legal to do this, license-wise. I'd suggest you contact Palm directly and see what they say about this. -slj- -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Clipper mini-font
AHA! I had used pilot-xfer and pilot-file to break apart Clipper.prc. It turns out that something about pilot-file failed and I only got half the resources. Trying again yielded the NFNT resources. Thank you for your help, I was able to break out 16 fonts from Clipper, including the one I was interested in. -Bob Whiteman -Original Message- From: Ben Combee [mailto:[EMAIL PROTECTED] Sent: Thursday, August 03, 2000 3:27 PM To: Palm Developer Forum Subject: Re: Clipper mini-font Bob Whiteman [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] Thanks for the tip, Tom. I've poked around inside Clipper.prc. None of the resources look promising because they're all bitmaps, icons, forms or strings...nothing that looks like a font resource. I did find a couple occurrences of Font and 'NFNT' inside the code 1 resource. One occurs near OpenFont and the other occurs near CloseFont. Now my problem is that I don't know how to properly grab the structure out of clipper. Does anyone have any hints on how to grab this font? Looking at Clipper (at least in 3.2) with RsrcEdit directly on the Palm device shows a bunch of NFNT resources, numbered 30128 through 30143. Did you just look at the PRC file exported from POSE or did you poke around on an actual device. -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Clipper mini-font
Thanks for the tip, Tom. I've poked around inside Clipper.prc. None of the resources look promising because they're all bitmaps, icons, forms or strings...nothing that looks like a font resource. I did find a couple occurrences of Font and 'NFNT' inside the code 1 resource. One occurs near OpenFont and the other occurs near CloseFont. Now my problem is that I don't know how to properly grab the structure out of clipper. Does anyone have any hints on how to grab this font? Thanks, -Bob Whiteman -Original Message- From: Tom Zerucha [mailto:[EMAIL PROTECTED] Sent: Thursday, August 03, 2000 1:18 PM To: Palm Developer Forum Subject: Re: Clipper mini-font On Thu, Aug 03, 2000 at 11:49:29AM -0700, Bob Whiteman wrote: The clipper appliation that's in the ROM for Palm VII devices apparently has a special mini font used for some data displayed by .pqa files. Is this a built-in font on the Palm VII? If so, is it available on other ROMs as well? It is in the Clipper resource database. You would have to open clipper (as resource DB) to access that font. -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
Converting Palm fonts to X .pcf fonts (was RE: Creating fonts)
Thank you Mostapha, with that lead I was able to find a couple tools capable of generating Palm fonts. Now my next problem is a bit more difficult: I would like a Unix X application to be able to display these Palm fonts. Is there a utility which can convert Palm fonts, such as the .pft files generated by FontEdit, into .pcf format? Thanks, -Bob Whiteman -Original Message- From: Mostapha BOUTERFASS [mailto:[EMAIL PROTECTED] Sent: Thursday, August 03, 2000 11:45 AM To: Palm Developer Forum Subject: Re: Creating fonts personnaly i use Pilot Font Editor Mostapha Bouterfass - Original Message - From: Bob Whiteman [EMAIL PROTECTED] To: Palm Developer Forum palm-dev-forum@news.palmos.com Sent: Thursday, August 03, 2000 6:45 PM Subject: Creating fonts Palm OS 3.0 and later have FntDefineFont, but there's no information about the format of fonts or about supported tools to generate Palm fonts. One web page in the Knowledge Base mentioned that there are 3rd party tools appearing which allow one to create Palm fonts, but there was no more specific information. So how does one create a Palm font? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
Clipper mini-font
The clipper appliation that's in the ROM for Palm VII devices apparently has a special mini font used for some data displayed by .pqa files. Is this a built-in font on the Palm VII? If so, is it available on other ROMs as well? -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
Creating fonts
Palm OS 3.0 and later have FntDefineFont, but there's no information about the format of fonts or about supported tools to generate Palm fonts. One web page in the Knowledge Base mentioned that there are 3rd party tools appearing which allow one to create Palm fonts, but there was no more specific information. So how does one create a Palm font? -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: How to intercept Graffiti keyboard command?
Really? That's not what I would've expected. Note that if you're using the usual event loop, your event handlers may not see the event. This is the kind of event loop you usually see: do { EvtGetEvent(); if (!SysHandleEvent()) if (!MenuHandleEvent()) if (!AppHandleEvent()) FrmHandleEvent(); } while (event.eType != appStopEvent); If you're not seeing it, maybe the keyDownEvent with vchrKeyboardNumeric is handled by the SysHandleEvent(), so none of your event handlers ever see it. You may need to insert another event handling function above SysHandleEvent. -Bob Whiteman -Original Message- From: Fitzsimons, Jeff To: Palm Developer Forum Sent: 8/2/2000 11:05 AM Subject: RE: How to intercept Graffiti keyboard command? Unfortunately, my keyDownEvent handler doesn't even trigger a breakpoint when the '123' is tapped, so it doens't appear to generate _any_ kind of key event. At least, not one that my app ever sees. Jeff -Original Message- From: Bob Whiteman [SMTP:[EMAIL PROTECTED] Sent: Tuesday, August 01, 2000 4:45 PM To: Palm Developer Forum Subject: RE: How to intercept Graffiti keyboard command? I beleve that when the user hits the silkscreened 123 button you'll see a keyDownEvent with a character of vchrKeyboardNumeric. -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: How to intercept Graffiti keyboard command?
I beleve that when the user hits the silkscreened 123 button you'll see a keyDownEvent with a character of vchrKeyboardNumeric. -Bob Whiteman -Original Message- From: Fitzsimons, Jeff [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 01, 2000 4:28 PM To: Palm Developer Forum Subject: How to intercept Graffiti keyboard command? Hi all, My app's main form has no input fields but accepts alphanumeric input (it's a calculator, of sorts, but there's not room to display a numeric keypad all the time). I would like to pop up an on-screen numeric keypad when the user taps on the little '12345' dot in the silk-screened Graffiti area. I realize I'd have to write my own keypad, since the system's SysKeyboardDialog() requires an active field. However, I cannot seem to find any event relating to this. Is it possible to intercept the '12345' tap before the system gets ahold of it? Jeff -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Symbol 1500
Thusitha, One approach you could use would be to write your own application which uses the scanner to read information, and then when a complete address book entry has been scanned, open the Address Book application's database and create a new record. Because the source code of Address Book is available you can find out the exact format of the data in the Address Book database. -Bob Whiteman -Original Message- From: Thusitha Batuwitage [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 01, 2000 6:58 AM To: Palm Developer Forum Subject: Symbol 1500 Hi Is there a way to be able to use the scanner in address book. [...] So back to my question, how do you accomplish the above task. (I do not want to modify the address book code itself). I would appreciate any thoughts on this. Thanks TS -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: no-cache browser
Oddly enough, I never received the original post by Timothee Masquelier, but I saw the reply below. Timothee: Browse-it, the browser from Pumatech which will be available through Intellisync.com, supports the no-cache flag. If you'd like more info about Browse-it, please email me directly. Richard: Client caching is even more important on Palm devices because the connections are very different from desktop connections. If a user doesn't have a modem handy, can't get reception with wireless, etc. then all the user has left left is pages stored in the cache on the device. With Browse-it, the original HTML and images aren't stored; a much smaller encoded version of the page is stored. If one's device is really strapped for memory the cache size can be set to 0 bytes. Pages won't be stored on the device. -Bob Whiteman -Original Message- From: Richard M. Hartman [mailto:[EMAIL PROTECTED] Sent: Monday, July 31, 2000 11:02 AM To: Palm Developer Forum Subject: Re: no-cache browser You mean that the browsers -are- caching pages? I would've thought that to be a huge drain on memory and an un-feature on a device as memory-tight as a Palm... -- -Richard M. Hartman [EMAIL PROTECTED] 186,000 mi/sec: not just a good idea, it's the LAW! Timothee Masquelier wrote in message [EMAIL PROTECTED]... Hi there! Sorry about the non-development question, but do you guys know a browser for Palm that would support the: META HTTP-EQUIV=pragma CONTENT=no-cache tag ? Thanks, -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Message rejected
The person's original plan was to use the category attribute of individual records to split a single Palm database into multiple tables. This category attribute is the one that's limited to 16 values. Though he only needs 14 tables, in the future if he needs to add more tables to the database, in which case he'll have to replace that mechanism with something else. I was just warning him of that possibility. If he instead uses the first byte of each record or some other mechanism to replace the built-in category mechanism he won't hit that limit. I think it would be simpler to just use multiple Palm databases, though. -Bob Whiteman -Original Message- From: Dave Lippincott To: Palm Developer Forum Sent: 7/27/2000 12:34 PM Subject: Re: multi table relational databases What does having 14 Tables/DBs have to do with the Palm only having 16 categories? (really only 15 if you count the obligatory 'all' category). Category use is definable or ignoble by the programmer. To get around the # limitation, you just ignore the PDB built in category mechanism and use your own if need be. I've seen applications from other developers with essentially an unlimited # of categories. - Original Message - From: Bob Whiteman [EMAIL PROTECTED] To: Palm Developer Forum palm-dev-forum@news.palmos.com Sent: Thursday, July 27, 2000 1:58 PM Subject: RE: multi table relational databases Well 14 tables raises a new concern. You can only have 16 categories in a Palm database. If you were to add a couple more tables to your already extensive database you'll be out of luck. -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: multi table relational databases
Well 14 tables raises a new concern. You can only have 16 categories in a Palm database. If you were to add a couple more tables to your already extensive database you'll be out of luck. Having multiple handles open at the same time is not an issue in itself. It's not like an Oracle or Sybase database where you have to be concerned about a limited resource such as database connections. The only issue with that is managing 14 DmOpenRefs instead of just one. One other reason to use separate Palm databases for each table is that it's more maintainable. For instance: Palm databases have a version attribute. If you update your application and update one of your tables you can simply increment that version attribute of the Palm database in new releases. You can easily detect when a user has an old version of that table and upgrade or delete it. If all your tables are in one Palm database, however, you only have one version for all your database tables. -Bob Whiteman -Original Message- From: K. Chugh [mailto:[EMAIL PROTECTED] Sent: Thursday, July 27, 2000 11:26 AM To: Palm Developer Forum Subject: Re: multi table relational databases hi bob. thanks for the reply. i am looking at like 14 or so tables, and i figured i don't want all those handles open at the same time. this is my first database program so i'm not sure if this is a rational concern or not. some of the tables will have only a few records, while others will have as many as a few thousand records. do you think i should actually implement one database for each table instead of one database with a table id? thanks, kevin -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Stepping into OS source code, and Palm OS 3.5 bug
I forgot to mention that I had a great deal of trouble diagnosing this problem. It would've helped if I could have stepped into the OS source code for some of the functions. I know that the Palm OS 3.5 source code hasn't been released yet, but if I had that would I be able to set up the CodeWarrior debugger to step into OS functions with full C source code support? -Bob Whiteman -Original Message- From: Bob Whiteman [mailto:[EMAIL PROTECTED] Sent: Wednesday, July 26, 2000 11:50 AM To: Palm Developer Forum Subject: Stepping into OS source code, and Palm OS 3.5 bug Hi all, I have a program which includes a set of small buttons across the bottom of the main form. To manage the overall size of this set of buttons I have a gadget which overlaps the buttons. On all OSes other than 3.5, this works fine. But on Palm OS 3.5, the buttons which overlap the gadget never get a ctlSelectedEvent. It looks like 3.5 is ignoring the fact that the gadget is set to unusable. For now I've replaced the gadget code with something clunkier. Is this a known issue with Palm OS 3.5? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: multi table relational databases
I've implemented a fairly simple relational database for an appliation. One problem with your suggested approach below is that it may be very tricky to sort the tables. Also, searches and inserts will take longer because they have to deal with a much larger Palm database. I used separate Palm databases for each table in the logical database. That way each table can have its own simple sort routine. Is there any particular reason why you don't want to create multiple Palm databases? -Bob Whiteman -Original Message- From: K. Chugh [mailto:[EMAIL PROTECTED] Sent: Thursday, July 27, 2000 7:45 AM To: Palm Developer Forum Subject: multi table relational databases hi- i'm paranoid about introducing a new layer to my apps by using sybase ultralite, etc. does anyone know of any techniques for using multi table databases? i was thinking of opening one database and using the category for the table identifier then just inserting records in the appropriate table. has anyone tried this? thanks, kevin -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Programmatically perform a HotSync
Chris Percival mentioned another approach that might work. Here's some more details: Chars.h defines the following character: #define vchrHardCradle 0x0209 // Button on cradle pressed This character can be sent in a keyDownEvent using the EvtAddEventToQueue(). My guess is that this would simulate the user pressing the cradle button, which is generally configured to do a local hotsync (though the user can change this behavior). -Bob Whiteman -Original Message- From: Eric Sun [mailto:[EMAIL PROTECTED] Sent: Thursday, July 27, 2000 9:20 AM To: Palm Developer Forum Subject: RE: Programmatically perform a HotSync If we need to short out some pin on the port to do this, I don't think Metrowerks or Palm has API that controls the phsyical hardware. I know that with some of the Symbol units, the hotsync is an application on the unit (i.e. not a hardware button, but an application button). Now, how can we get those code into our own program, is another question. That is kind of what's needed. To be able to access that HotSync program within my code. And thanks again for all the help so far! It is much appreciated! Thanks, __ Eric C.F. Sun Senior Software Developer RAD Specialist Q.Data Inc. Tel: (905)477-1367 x.277 Date: July 27, 2000 Time:12:07 -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Mutually-exclusive checkbox
You can do this by creating a number of checkboxes on the form and then assigning a Group ID to them. Checkboxes with the same group ID are treated as a set of radio buttons. (Unfortunately the Palm OS draws them the same whether they're grouped or not, so for the sake of the user you may want to do something to visually group them on the form.) -Bob -Original Message- From: Wang, Nancy [mailto:[EMAIL PROTECTED] Sent: Wednesday, July 26, 2000 3:42 PM To: Palm Developer Forum Subject: Mutually-exclusive checkbox Hello All, I'd like to ask whether there's any setting for mutually-exclusive checkbox (like radio box) in Palm constructor. I can develop some code to implement the mutual exclusion. Just in case there's an easy way, I don't like to reinvent the wheel. Thanks. Nancy -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
Palm OS 3.5 list arrows
I have a program which creates list controls on the fly (LstNewList) and moves them around the display (FrmSetObjectPosition) and destroys them (FrmRemoveObject). I use a clipping rectangle to keep this movement within a display area on the main form. This works properly on all OSes between 3.0 and 3.3, but on 3.5 there's a problem. The 3.5 list control added arrows at the top and bottom which make it easy for the user to scroll the list. The problem occurs when the list overlaps the clipping region and I call LstDrawList. The majority of the list control is clipped properly but the arrow is drawn outside the clipping region, violating the WinSetClip call. This ends up overwriting parts of the main form outside the display area on the main form. I could redraw the rest of the main form every time this occurs, but that would cause flickering and would significantly slow down the drawing. Is there a fix for this issue? -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
Stepping into OS source code, and Palm OS 3.5 bug
Hi all, I have a program which includes a set of small buttons across the bottom of the main form. To manage the overall size of this set of buttons I have a gadget which overlaps the buttons. On all OSes other than 3.5, this works fine. But on Palm OS 3.5, the buttons which overlap the gadget never get a ctlSelectedEvent. It looks like 3.5 is ignoring the fact that the gadget is set to unusable. For now I've replaced the gadget code with something clunkier. Is this a known issue with Palm OS 3.5? -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
OS Compression? (was: RE: m100 EFIGS oddness)
Application compression in the OS, huh? Is the decompression algorithm exposed anywhere? What algorithm is used? Also out of curiosity, bitmaps can be compressed using scan line compression or run length compression. RLE is a pretty standard compression algorithm, but what is scan line compression? (I'd like to decide which compression will be better for the images in my resources, but I'd rather not have to make that decision by trying it out on every image. Knowing the compression algorithm would help.) Thanks in advance, -Bob Whiteman -Original Message- From: David Fedor [mailto:[EMAIL PROTECTED] Sent: Friday, September 08, 2000 4:06 PM To: Palm Developer Forum Subject: Re: m100 EFIGS oddness [...]As for Security: ROM space was very tight and so they had to keep that application compressed in ROM, and the appropriate language of it gets decompressed and installed in RAM once you've chosen your language. Having 5 languages all available takes a good deal of memory, and there wasn't quite enough without the Welcome app doing a little compression on the Security app. -David Fedor Palm Developer Support -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
PalmOS 3.5 8-bit Colour Palette
The PalmOS Programmer's Companion indicates that the named HTML colour gray (0x808080) is a member of the PalmOS palette. I checked on a device, and the emulator, and this colour is not present. However, the Programmer's Companion writes that only the first 231 entries in the palette and the last entry are defined. Summing the total number of colours up: 216 Web-safe colours 10 greys, giving us all posible values of grey. + 6 named HTML colours 232 Which seems to be consistent. However, entries 0xE6 and 0xFF are both black in my tests. Is this an error in documentation? Or is this an error in implementation? If it is an error in implementation, will it be corrected in future revisions? Will index 0xE6 become 0x808080? Thanks in advance, -Bob -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Bitmap family
-Original Message- From: [EMAIL PROTECTED] Sent: 8/23/2000 8:05 PM OK, let me get this straight, you can't add stuff into the bitmap family? Exactly. Try Ctrl-R after highlighting Family Items. Personally I use Ctrl-K all the time, and let Contructor set up the new item with default values. Wow, after myself and four other developers poking at this program for a total of an hour, none of us found that. That's exactly what I was looking for. I had tried clicking the space below Family Items, the title bar of the window and a few other places, but I never noticed that clicking the words enabled the menu items. Thank you for pointing this one out to me. [...] A had problems getting used to the Mac oriented UI as well. Sure it looks nice, but I'ld rather have something that is more friendly. Me too...either that or a working and complete help file. -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
Bitmap family
I'm using Constructor version 1.5b7 (that's the latest version, right?) to create a bitmap family. All I want to do is get a color bitmap created in constructor to show up in the emulator using a Palm IIIc ROM. So here's my steps: Ctrl-R to create a new resource: Resource type Bitmap Resource name BMP Resource ID 5000 Double-click the new bitmap Under the Colors menu, choose 256 colors Under Options, choose Set Image Size and set it to 30x30 Scribble on the bitmap in several colors. Ctrl-R to create a new resource: Resource type Bitmap Family Resource name FAMILY Resource ID 5001 Double-click the new bitmap family Change the width and height to 30. So... um...now what? There's an empty list of Family Items, but I can't figure out how to add the new bitmap to the family. I can drag the bitmap onto the dialog, but that doesn't do anything. I can drag a form bitmap from the resource catalog onto it, but that doesn't do anything either. Hmm, copy the bitmap, click the bitmap family, but Paste resource is disabled... Wow. Let's see... Drag BMP onto FAMILY in the list of application resources. Nope. Click the bitmap, edit-select all, click the family, still can't paste. Ctrl-drag? Shift-drag? Ctrl-shift-drag?? Now, I've been around many different kinds of computers and used countless programs. I like to think I'm a computer expert. But for the life of me I can't figure out how to create a bitmap family. If I resort to the help file, the topic about bitmap families tells me how to create the bitmap family but not how to add bitmaps to the family. Also, the two images on this help page are broken with the messages: The picture Bitmapfam.bmp is missing! and The picture Bitmapfam2.bmp is missing! So how is this supposed to work? -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
Free Handle
It is possible for a program in the Palm OS to have a particularly nasty bug: If you create a handle in database memory, attach it to a database, and then free the handle you'll start to get Free handle errors when working with that database. I found and fixed such a problem in my program, but there's still one problem left to solve: Once you have a device that is in this state, how do you get rid of this corrupt database? Using the application launcher to delete the application which has this database will crash with Free handle, as will using a utility such as Insider to delete the database. HotSync and pilot-xfer both bail when they try to do anything with the database. The only method of removing the database that I have found is to use pilot-xfer to list (pilot-xfer -l) and back up all the databases on the palm except for the corrupt one (using pilot-xfer -f on each of the files, not pilot-xfer -b). Then hard-reset the device to clear all memory and restore all the backed up databases. Does anyone know of an easier way of nixing a corrupt database? -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: URGENT !!!! Inet with AlmSetProcAlarm
Yeah, CDPD coverage is getting there slowly, and the CDPD protocol has a very slow and comparatively poor cell handoff mechanism, so if you're moving at all it tends to drop connection for up to several seconds without warning. CDMA is a much more solid connection, and although the theoretical bandwidth is lower, in practice the stability of connection in my opinion far outweighs the somewhat smaller bandwidth. The one that I want to know more about is Ricochet. I remember looking into their 9600 baud connection and finding out that if you were moving quickly, say on a bus or train, the handoffs couldn't happen fast enough and so the connection couldn't be maintained. If their new 128kbaud network lacks this limitation and has good coverage it will make all other connections obsolete, IMO. -Bob Whiteman -Original Message- From: Fitzpatrick, Joe [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 23, 2000 12:26 PM To: Palm Developer Forum Subject: RE: URGENT Inet with AlmSetProcAlarm I've actually been underwhelmed with the Omnisky. Part of it is that the coverage seems terrible in Southern Cal. The first time I saw one I tried to pick it up and use it blind (always a good usability test) and couldn't get anywhere. On the other hand, it looks nicer than a VII... ;) -jjf -Original Message- From: Bob Whiteman [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 23, 2000 6:50 AM To: Palm Developer Forum Subject: RE: URGENT Inet with AlmSetProcAlarm Actually the OmniSky device, as well as the other Novatel Minstrels I've used, have a sleep mode. In this mode the Minstrel stays registered with the CDPD network in a way analagous to a cell phone that's turned on but not currently making a call. When the Minstrel is in this mode it can receive a connection that includes an identifier that's analagous to a TCP port number. The Minstrel application on the Palm receives this connection and based upon the port number launches a particular application and sends it the data that was sent in the connection. So basically it is possible to receive notifications via the CDPD network and Novatel Minstrel devices. The major drawbacks are that the sleep mode and port settings are comparatively difficult to configure, and that this sleep mode drains the Minstrel batteries. In my experience the battery drain was severe, and that far outweighed the usefulness of notification...but but maybe that's because I had a poor battery in my Minstrel. -Bob Whiteman -Original Message- From: Fitzpatrick, Joe To: Palm Developer Forum Sent: 8/22/2000 10:58 PM Subject: RE: URGENT Inet with AlmSetProcAlarm I'm not sure why you would need to create a shared library. Why not just schedule an alarm like other applications (ex. Datebook, Clockworks, etc.) and do your work in response to the alarm? As for feasibility, neither a Palm VII or an Omnisky equipped V is particularly well suited to background internet polling. The VII will not make a wireless connection unless the antenna is up. Although I haven't played with it as much, the Omnisky modem/software also seems 'user initiated transaction' oriented. Neither unit is blindingly fast and can basically hang the system for fairly long periods of time. I can't speak for other users, but a program would only need to freeze my Palm for 10-20 seconds once while I'm trying to enter a phone number, etc. for me to not only delete it, but pay a huge guy named Spike to beat up the author. People have been talking more sophisticated wireless options as Handspring modules, but I don't know what (if any) products are actually shipping. Good Luck, -jjf -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Timed Splash Screen
You can use the alarm manager to send a launch code to your application after a specified amount of time. Look at the doucmentation for AlmSetAlarm(). That way your application's event loop keeps running, but after a specified amount of time it will be notified that it's time to move on to the next form. -Bob Whiteman -Original Message- From: Timothy Astle [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 23, 2000 11:37 AM To: Palm Developer Forum Subject: Re: Timed Splash Screen Why not just load the next form using FrmGotoForm()? You probably don't need to generate an event, etc.. FrmGotoForm should handle all this for you. Maybe I misworded my problem. I do have a FrmGotoForm(...) function which sets it to the next form. However, there are no events being sent to cause my event handler to tell it that it's time to move to the next form. If I click on the screen constantly, it will go to the next form onces the time difference is valid. If it isn't, it stays put. I need a way to constantly poll. Right now I'm getting my events from the main event loop. EvtGetEvent(event, evtWaitForever); However, I'm weary of using another EvtGetEvent and loop inside of that event handler because it seems sloppy to me. Is that the only way? + Timothy D. Astle Embedded Systems Programmer ALT Group Inc. + People who can smile when things go wrong has thought of someone else to blame it on. -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Get visual artifacts using WinCopyRectangle() to drag icons
-Original Message- From: Chris Dunworth To: Palm Developer Forum Sent: 8/22/2000 11:27 PM [...] When the user drags an icon up and/or to the left, a trail of old icon images is left behind. Dragging down or to the right never causes this problem. I cannot find errors in my drawing or saving/restore code (which of course means their aren't any ;-) ). Does this problem as I describe it set off any bells with any of you? I'd love to hear any theories as to why this is happening. This sounds like a classic off-by-one error. The above problem is what you would see if the extent.x and extent.y in one or more of your RectangleType structures was less than it should be. The classic problem with rectangles is that you don't know if the right and bottom edges of the rectangle are inside or outside the rectangle. I think that you're guessing that they are inside but the Palm OS treats them as if they are outside. -Bob Whiteman -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: URGENT !!!! Inet with AlmSetProcAlarm
Actually the OmniSky device, as well as the other Novatel Minstrels I've used, have a sleep mode. In this mode the Minstrel stays registered with the CDPD network in a way analagous to a cell phone that's turned on but not currently making a call. When the Minstrel is in this mode it can receive a connection that includes an identifier that's analagous to a TCP port number. The Minstrel application on the Palm receives this connection and based upon the port number launches a particular application and sends it the data that was sent in the connection. So basically it is possible to receive notifications via the CDPD network and Novatel Minstrel devices. The major drawbacks are that the sleep mode and port settings are comparatively difficult to configure, and that this sleep mode drains the Minstrel batteries. In my experience the battery drain was severe, and that far outweighed the usefulness of notification...but but maybe that's because I had a poor battery in my Minstrel. -Bob Whiteman -Original Message- From: Fitzpatrick, Joe To: Palm Developer Forum Sent: 8/22/2000 10:58 PM Subject: RE: URGENT Inet with AlmSetProcAlarm I'm not sure why you would need to create a shared library. Why not just schedule an alarm like other applications (ex. Datebook, Clockworks, etc.) and do your work in response to the alarm? As for feasibility, neither a Palm VII or an Omnisky equipped V is particularly well suited to background internet polling. The VII will not make a wireless connection unless the antenna is up. Although I haven't played with it as much, the Omnisky modem/software also seems 'user initiated transaction' oriented. Neither unit is blindingly fast and can basically hang the system for fairly long periods of time. I can't speak for other users, but a program would only need to freeze my Palm for 10-20 seconds once while I'm trying to enter a phone number, etc. for me to not only delete it, but pay a huge guy named Spike to beat up the author. People have been talking more sophisticated wireless options as Handspring modules, but I don't know what (if any) products are actually shipping. Good Luck, -jjf -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Does app get notified when Palm switches off
You might need to call KeySetMask() first. This function filters out certain keyDownEvents. After that, you can have your application watch for vchrAutoOff, vchrPowerOff and/or hardPowerChr. Each of these keys is described in the OS 3.5 SDK in Chars.h -Bob Whiteman -Original Message- From: Richard Anderson [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 22, 2000 8:45 AM To: Palm Developer Forum Subject: RE: Does app get notified when Palm switches off Hi, I dont get posted a keydownEvent when I press the power button. Rik -Original Message- From: Nesse, Rustin [SMTP:[EMAIL PROTECTED] Sent: 22 August 2000 16:10 To: Palm Developer Forum Subject:RE: Does app get notified when Palm switches off Well, there's a keydownEvent generated by pressing the power button... might want to take a gander at the header KeyMgr.h. Hope that helps! -Rus -Original Message- From: Richard Anderson [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 22, 2000 4:15 AM To: Palm Developer Forum Subject: Does app get notified when Palm switches off Hi, Does the Palm get notified when the Palm is switched off. If I want my app to always start from the beginning, how do I do this if it was running when the Palm was switched off. I would like to be able to close my app when the Palm is turned off. Thanks Rik -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: Progress bar
Why not simply use the Progress Manager? PalmOS has a built in progress bar that's documented in the reference. Search for Progress Manager, or look in the header files for functions beginning with Prg. -Bob Whiteman -Original Message- From: Van Nguyen [SMTP:[EMAIL PROTECTED] Sent: 18 August 2000 20:54 To: Palm Developer Forum Subject: Progress bar Greetings everyone, I am trying to implement a progress bar for my application. If you know any books or any examples that I can use as references, please point me to the right direction. Any suggestions would be appreciated. Thanks ! = Best regards, Van Nguyen. -- For information on using the ACCESS Developer Forums, or to unsubscribe, please see http://www.access-company.com/developers/forums/
RE: 802.11b on tungsten?
- Craig Belson [mailto:[EMAIL PROTECTED]] wrote: --- Aaron Ardiri [EMAIL PROTECTED] wrote: any reason why you cannot do TCP/IP over BT? Yeah - because, from my understanding, the APIs for BT have to be licensed from Motorola - and that's not an option at the moment. The APIs for Bluetooth development on Palm OS are available as part of the Palm OS SDK, and they do not need to be licensed from Motorola. See http://www.palmos.com/dev/tools/bluetooth/ for the latest news on the Palm OS Bluetooth SDK. -Bob Whiteman = Developer Technical Services Engineer - Comms PalmSource, Inc. = -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
RE: quick lists question
David, I think that this Palm OS Knowledge Base article will answer your question: http://kb.palmsource.com/cgi-bin/palmsource.cfg/php/enduser/std_adp.php?p_faqid=293 -Bob Whiteman = Developer Technical Services Engineer - Comms PalmSource, Inc. = -Original Message- From: David McNab [mailto:[EMAIL PROTECTED]] Sent: Wednesday, January 22, 2003 6:39 PM To: Palm Developer Forum Subject: quick lists question I'm using a list, where I've set the choices with LstSetListChoices(). If, at a later stage, I call LstSetListChoices() again, does PalmOS free the memory of the choices list and choice strings, or is that my responsibility? Thx David -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
RE: DmAttachRecord, DmResizeRecord problems
Bill, When you use MemHandleNew() the handle that is allocated is in the dynamic heap. The dynamic heap is freed when your application exits, so attaching such a handle to a database will corrupt that database. Instead of using MemHandleNew(), use DmNewHandle(). This allocates the handle in database memory, ensuring that it can safely be attached to your database. It won't be freed when your application exits. -Bob Whiteman = Developer Technical Services Engineer - Comms PalmSource, Inc. = -Original Message- From: Bill Heidler [mailto:[EMAIL PROTECTED]] Sent: Wednesday, January 15, 2003 6:17 PM To: Palm Developer Forum Subject: DmAttachRecord, DmResizeRecord problems I am starting to develop the DB part of my app; I have records that are linked and some potential performance issues, such that I want my record indexes to be stable (records will not change index value or be deleted except during HotSync). However, the records may be updated and change in size (shrink or expand). Records will typically be several hundred bytes or less, but could potentially be much larger. I would like to impose as few restrictions on the record sizes as possible. When a record is updated, the old data will be completely replaced by the new data. My first solution approach for updating the records was to use DmResizeRecord() to reduce the size of the old record (to 0 if possible, thus holding my record slot only), allocate a memory buffer using MemHandleNew() ), stuff it with the new data and then use DmAttachRecord() to replace the old record chunk. Problem is, when I exit the app I get a Memory Leak detected for the chunk that I allocated and attached. I like the Memory Leak detection feature of the POSE, so don't want to have to ignore messages like that (and I'm not sure what the ramifications would be on the device anyway). Second solution approach is to do another DmResizeRecord() instead of the DmAttachRecord(), then copy the data from the memory buffer and then delete the buffer. That gets rid of the memory leak, but when I did this I got a Chunk Locked error on the second DmResizeRecord(). I didn't seem to get the error all the time, but could not pin down the circumstances when I got it and when I didn't. The workaround to that is to unlock the chunk associated with the record (the handle that gets returned from the first DmResizeRecord() call). That seems to work; but I worry that the chunk is not being locked all the time. I have gotten Chunk Underlocked errors from the MemHandleUnlock() once or twice. Again, I haven't tested enough to pin down the circumstances. I am running PalmOS v 3.5.1, using CodeWarrior 8.0 . Thank you for any help or comments, Bill Heidler [EMAIL PROTECTED] -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
RE: previously compilable code now chokes CW
David, When I've encountered problems like this it's been due to bugs in header files, in a #define in a header file, or in a prefix file. One thing that may help you locate the problem is to look at the preprocessed version of the source file. Assuming you're using CodeWarrior you can right-click the source file in your project listing and choose Preprocess. This shows the actual text being sent to the compiler, after accounting for headers, #defines and the prefix file. From the error you're reporting I would guess that you have an extra keyword in some file that's implicitly or explicitly included in your source file. Looking through the preprocessed source file may make it obvious. -Bob Whiteman = Developer Technical Services Engineer - Comms PalmSource, Inc. = -Original Message- From: David Beers [mailto:[EMAIL PROTECTED]] Sent: Tuesday, January 14, 2003 9:39 AM To: Palm Developer Forum Subject: previously compilable code now chokes CW I've been working on a project that uses the MemoPad source as a starting point. All has gone well up until now and I've successfully compiled and tested various versions. Then I made some modifications to handle additional text fields and record structures to accept the data. Suddenly, the code generates compile errors on the very first line after the preprocessor directives in the first file of the project--code that has compiled before and hasn't been changed. Specifically, the compiler hits the first definition for a typedef structure and tells me that it expected a '{' after the typedef keyword. Usually this kind of thing indicates a syntax error in a previous line, but there are no previous lines except for some #defines and these haven't been changed at all. In fact this part of the code hasn't changed from the original MemoPad source. Not having the faintest clue what might cause the CW compiler to fail on code that worked perfectly fine before, I tried some different things (obviously grasping at straws): 1. Retracing some of my recent steps, most notably replacing a file that contained functions for beaming that I didn't need and restoring the calls to those functions to the way they were in MemoPad. 2. Checking the original MemoPad code to make sure it still compiles normally. It does. 3. Shifting around the file order within the segment. 4. Creating a fresh project and recreating the files in it. None of this changed the situation. Is it possible that a syntax error farther down in the file could cause code that precedes it to fail to compile? If not, what else could be the cause of this? TIA, David -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
NetLib and EvtResetAutoOffTimer() (was Re: Procedure alarms)
Thanks for all the help Danny. Following your advice I was able to get procedure alarms working, along with proper deletion protection. Unfortunately something is still calling EvtResetAutoOffTimer(). I've done a search through the OS source code and found all occurrences of EvtResetAutoOffTimer() and EvtSetAutoOffTimer(). I don't see it appearing in any of the functions that my code calls. The major suspect is NetLib, since Palm doesn't release the source code for it. Do any of the functions in NetLib call EvtResetAutoOffTimer()? Thanks, -Bob Whiteman Danny Epstein [EMAIL PROTECTED] wrote in message news:83029@palm-dev-forum... The documentation talks about the LCD if the device was off at the time, but the version of the docs that I have don't say anything about the auto-off timer. I didn't mean to imply that this behavior was documented, just that it's what I'd expect. There is a single API that we generally use for (a) resetting the auto-off timer and (b) turning on the LCD (if it's off): EvtResetAutoOffTimer. So it's not surprising that launch-code alarms reset the auto-off timer; we know they turn on the LCD. I'm not sure why the trigger launch resets the auto-off timer turns on the LCD; perhaps it would seem weird if the alarm sound played with the LCD off. It's obvious why the display launch resets the auto-off timer turns on the LCD. It needs to show the user something, and they need time to look at it. Apps that use alarms for non-UI stuff, like polling hardware, should use procedure alarms. I think that my app can safely use the sysNotifyDeleteProtectedEvent notification to do the cleanup. If you require Palm OS 4.0 or later, then you should be fine. This time I was actually asking specifically about AlmSetProcAlarm() and deletion because I don't know whether the deletion attempt will simply fail with an error message...that may be sufficient for this app. Perhaps I was a bit terse. :) Lemme try again... For launch-code alarms, you don't have to worry about unregistering; it's taken care of automatically when your app is deleted. Procedure alarms require a callback to remain at a fixed address in memory. To satisfy this requirement, you need to lock your code resource. It's automatically locked while your app is running, but you want it to remain locked when your app quits, so you need to lock it again. When your app exits, the OS will unlock your code resource once, but it'll still have a lock count of one. This will cause Palm OS to complain, at least on debug ROMs - unless you protect your database. This is how you indicate to Palm OS that you know what you're doing. :) If you protect your database, then the user will get an error when they try to delete it - unless you register for sysNotifyDeleteProtectedEvent and handle it as I described: unregistering with the Alarm Manager, unlocking your code resource, and unprotecting your database. Or you can just live with not allowing the user to delete the app. They can always do a no-notify reset to delete the app. This is the best you can do on Palm OS 3.5 and earlier. Note that a procedure alarm should never be allowed to fire without a valid callback address. It is your job to ensure that this never happens. The recipe I described above prevents this from ever happening. So the answer to your question what happens when a procedure alarm fires after the app was deleted? is that this should never be allowed to happen and the results are undefined. In other words, bad things happen. :) - Danny -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Quick off on
I've found a bug in a driver which can be avoided by powering the device off. I'm trying to programmatically power the device off and then immediately back on again. My code successfully enqueues a keyDownEvent with chr = vchrAutoOff, and the device sleeps as expected. I also set an alarm for TimGetSeconds() + 1 so the device will wake up one second later. The result is that the device doesn't sleep. Apparently the alarm is triggered before the device sleeps, so it never fully goes to sleep. To make sure the alarm is set as late as possible in the sleep process I register for the sysNotifySleepNotifyEvent. I use a high priority value of 240 so my program will receive the notification last. While handling the sysNotifySleepNotifyEvent I set the alarm. The results are the same. If instead I set the alarm for TimGetSeconds() + 2 the device always sleeps as expected, but it can take 6-10 seconds to wake up again, which is too long for my application. Can anyone suggest a reliable way to put the device to sleep and wake it up quickly? Thanks, -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Re: Iterating through DB
If you're just iterating through all the records anyway (since the category argument to DmQueryNextInCategory() is dmAllCategories) why not just use DmQueryRecord()? Untested code: totalNumber = DmNumRecords( gSRWorkDB ); for ( iRec = 0; iRec totalNumber; iRec++ ) { recordH = DmQueryRecord( gSRWorkDB, iRec ); if ( recordH ) { ... } } -Bob Whiteman Edward P. Ross [EMAIL PROTECTED] wrote in message news:82978@palm-dev-forum... I am iterating through a database and getting the number of records that match the search criteria as seen below. Problem is that p1 gets stuck on the first value and never changes. It does loop through the correct num of times but p1 stays the same. It's probably something stupid but it's Friday... Any help would be appreciated. Thanks, Ed // Code to visit every record: for (i = 0; i totalNumber; i++) { recordH = DmQueryNextInCategory (gSRWorkDB, pos, dmAllCategories); if (recordH) { skelSRWorkDBType * p1 = (skelSRWorkDBType *) MemHandleLock(recordH); if (p1) { if ((StrCaselessCompare(selectedClientText, (Char *) (p1-PUN)) == 0) (p1-Date = daysInRangeL) (p1-Date = daysInRangeH)) { number = number + 1; } MemHandleUnlock(recordH); } } pos++; } -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Procedure alarms
I've discovered that when you set an alarm via AlmSetAlarm() and the alarm is triggered, the alarm code in the OS calls EvtResetAutoOffTimer(). Unfortunately this means my program, which does something every 30 seconds, keeps the device on forever. I've also discovered that if you use AlmSetProcAlarm() to set a procedure alarm, the alarm code in the OS doesn't mess with the auto-off timer. I'd like to use a procedure alarm, but before I rearrange all this code I need to figure out one scenario: If I lock my application's code resource and pass that to AlmSetProcAlarm(), what happens when the user deletes my application? Does the delete fail with a generic error message? Or does the delete succeed, but the next time the alarm is triggered the device crashes? Or something else? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Re: Procedure alarms
I've discovered that when you set an alarm via AlmSetAlarm() and the alarm is triggered, the alarm code in the OS calls EvtResetAutoOffTimer(). ... I've also discovered that if you use AlmSetProcAlarm() to set a procedure alarm, the alarm code in the OS doesn't mess with the auto-off timer. Correct. That's how it's supposed to work. The documentation talks about the LCD if the device was off at the time, but the version of the docs that I have don't say anything about the auto-off timer. I found out about the auto-off timer by testing my app and then looking at the OS source code in AlarmMgr.c. If I lock my application's code resource and pass that to AlmSetProcAlarm(), what happens when the user deletes my application? I think I covered this in my answer to your last question: http://www.escribe.com/computing/pcpqa/m57070.html I appreciate the help. I think that my app can safely use the sysNotifyDeleteProtectedEvent notification to do the cleanup. This time I was actually asking specifically about AlmSetProcAlarm() and deletion because I don't know whether the deletion attempt will simply fail with an error message...that may be sufficient for this app. (I have a hard deadline looming, so the less new code the better.) Thanks again Danny, -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Leftovers from deleting applications
If I set an alarm using AlmSetAlarm() and then the user deletes the application before the alarm is triggered, does the alarm manager handle this gracefully? If I create a feature using FtrPtrNew() and then the user deletes the application, does the feature manager clean up the feature automatically? Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Re: Scrolling form
In a previous life I worked on Browse-it, a web browser from Pumatech that is similar to AvantGo. To support HTML forms we had to make UI controls which are scrollable. This is a very difficult problem to solve in the generic case of HTML forms because you have to dynamically create controls and manage their IDs. If you know when writing the code what controls are going to appear it's not nearly as difficult. In order to have a control that appears to scroll onto the display you set the position of the control while handling scroll events. If you set the position of a control to halfway off the bottom of the display it will still function just fine. If you need the control to scroll beneath a toolbar at the bottom or under the title bar at the top you have to use WinSetClip to set a clipping rectangle whenever the OS is about to draw that control. That means listening for certain events and setting the clipping rectangle before calling FrmDispatchEvent(). (Do controls ever get drawn in SysHandleEvent()?). You do NOT want to have the clipping rectangle set when calling MenuHandleEvent() or your menus will not draw properly. Because you just have a license agreement with a couple buttons only at the bottom of the agreement it would be much easier to simply not display anything below the scrolling area of the license agreement. Have it flush with the bottom of the screen. The button drawing will never have to be clipped. Then you only need to set the clipping rectangle when drawing the text of the agreement so it doesn't overwrite the title bar. Bob Whiteman Senior Software Engineer Pico Communications Roar Lauritzsen [EMAIL PROTECTED] wrote in message news:79994@palm-dev-forum... Consider a license agreement (this is not what I am doing, but it illustrates the need). You have a form of mostly text, and at the bottom of the form there is an OK button that appears only when you have scrolled down to the bottom. -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Re: Getting rid of a database after you've screwed it up ;-)
Matt Disher (TiBook) [EMAIL PROTECTED] wrote in message news:79540@palm-dev-forum... Getting rid of a database after you've screwed it up ;-) I've got an app now with an occasional Free Handle Error that makes my database untouchable and un-deleteable. (that is you even think about looking/touching it and it crashes with MemoryMgr.c, Line 4384 Free Handle Is there anyway to nuke it baring a hard reset ? I seem to remember a system call that I cannot find that told the OS to cleanup after me and force databases closed after I left a pointer dangling. -MD I used to have this problem when I would free a handle that was attached as a database record. It is a very evil bug because the only way to fix it is to hard reset the device. I mentioned this to some of the Palm OS engineers at last year's PalmSource expo. After looking at me with an expression of Why in the world would you go and do that? they confirmed that there's no straightforward way to get around this. I suppose you could write a program that would look directly into the data manager's structures and repair the damage, but the effort probably isn't worth it. Better to spend your time fixing the bug that caused this situation. Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Thousands separator
I have to display some large numbers with thousands separators. To my surprise I couldn't find a Palm OS API to do this. StrItoA() returns a number with no separators. StrPrintF() doesn't appear to support an option to insert thousands separators. StrLocalizeNumber() only changes the localization of a number that already has thousands separators. I know I can roll my own, but I'm surprised this isn't built in somewhere. Did I miss something? Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Re: Thousands separator
Steve Mann [EMAIL PROTECTED] wrote in message news:79491@palm-dev-forum... Nope. Sounds like you did you homework. There has been source code posted on this forum in the past for formatting floating point numbers with separators. you could probably easily adapt that. If you can't find anything, email me privately--I have some around here somewhere I can send you. I appreciate the offer. I've already rolled my own crude code that'll fit my needs for now. Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
Re: Custom gesture
You have an excellent point. The hack mechanism already has a way of adding a configuration panel to a hack, so I could simply provide a dialog which lets the user choose what the stroke is like. Thanks for the advice. Bob Whiteman Senior Software Engineer Pico Communications Richard M. Hartman [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED]; Please, PLEASE don't hard-code a specific gesture. Even if you can guarantee that it does not conflict _today_, it may conflict w/ something else _tomorrow_. -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Custom gesture
Ben Combee [EMAIL PROTECTED] wrote in message news:77970@palm-dev-forum... McPhling is a hack that does something like this, and also has source code released under the GPL. You could look at that implementation to see how you could implement this in your own program. See http://home.cfl.rr.com/mjmdlm/palm/ for details. Thanks Ben, this is exactly what I'm looking for. I'd rather not have any conflicts with existing programs which make these kinds of custom gestures, so I'd like to have a unique gesture. Perhaps you're more familiar with the existing hacks that use gestures...do you have any suggestions for an unused gesture? I was planning on using a stroke from Find to Calc. Thanks, Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Custom gesture
David A. Desrosiers [EMAIL PROTECTED] wrote at 5:01AM on 2/26/2002 in message news:77987@palm-dev-forum... We support gestures in Plucker also, take a look. http://.plkr.org/ /d Once I took an extra w out of the URL I found some useful source code, thanks! It takes a dedicated developer to respond to newsgroup posts at 5 AM. :) Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Custom gesture
I know there are several programs which provide custom gestures, such as a stroke from Home to Calc, which perform some useful action without leaving the current application. I'm looking for pointers on how to do this in my application. I assume that this requires writing a hack and processing pen events, but I'm unsure of how difficult this is going to be. I understand I have to register the hack, keeping the appropriate code resource locked. When my hack is called I can't assume globals or static variables are available. I also need to take it easy on stack usage because the code will be running on top of the current application's stack. How limited can I expect stack space to be? How can I safeguard against a stack overflow and elegantly fail if there's not enough left? I suppose what I'm looking for is a general guide to writing a hack without using HackMaster. I searched eScribe and Google but didn't find anything. Which function do I want to hook? Should I hook SysHandleEvent() and watch for PenDown, PenMove and PenUp events? I'd rather not hook a function that's called so frequently... would hooking EvtProcessSoftKeyStroke() be appropriate? Thanks in advance, Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Risky tSTR
Marco Pantaleoni [EMAIL PROTECTED] wrote in message news:76354@palm-dev-forum... On Mon, Feb 04, 2002 at 10:40:29AM -0800, Bob Whiteman wrote: char *GetResourceString( UInt16 id ) { static char string[256]; ... if ( 255 == i ) string[256] = '\0'; // Make sure the string is null-terminated this writes after the end of the string. A valid index value here is in range 0 - 255. You're correct, it is off-by-one. That's what I get for posting code I wrote off the top of my head. Thanks for pointing it out. Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Risky tSTR
I think the worst risk in using an unlocked handle is that you get a bug that is very difficult to reproduce. The program may simply crash for no apparent reason. Cleanup is always a burden in Palm OS programs, but there are some techniques that can ease this. When I had a situation similar to yours I set a maximum length of a string in a resource and wrote a utility function like this one: char *GetResourceString( UInt16 id ) { static char string[256]; char *temp; MemHandle h; UInt16 i; h = DmGetResource(...); if ( !h ) return NULL; temp = MemHandleLock( h ); i = StrLen( temp ); if ( 255 i ) i = 255; MemMove( string, temp, i+1 ); if ( 255 == i ) string[256] = '\0'; // Make sure the string is null-terminated MemHandleUnlock( h ); DmReleaseResource( h ); return string; } This returns a string that is valid until the next time someone calls GetResourceString(). Any string longer than 255 characters is truncated. No cleanup call is needed. I just threw this function together, so I don't guarantee that it's bug-free. :) Bob Whiteman Senior Software Engineer Pico Communications Max Bian [EMAIL PROTECTED] wrote in message news:75519@palm-dev-forum... Thanks for the explaination. I would be using it immediately after that. As Steve said in another reply, it can still be risky. I was thinking about a cheap way to do the thing using a function without having lots of UnLock and Release floating around. Well, I think it is better to be safe than sorry. Thanks. Max -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Practical questions
Scott Johnson [EMAIL PROTECTED] wrote in message news:75200@palm-dev-forum... From: Ben Combee [mailto:[EMAIL PROTECTED]] With Handspring's driver, I can USB debug to Visors. I don't knowof a driver that will allow debugging to both, although Palm's driver will support HotSync to the Visors. FWIW, I found the Palm and Sony USB drivers don't support each others' devices, but when I installed Palm (i705) Desktop on top of Sony's, both drivers ended up installed and then both devices can HotSync. Of course due to Windows NT's fine USB support I have to *network* HotSync my USB devices from a Windows 2000 laptop three feet over to my NT development machine, but that's another story. :-) -slj- I avoid the USB problems by getting serial cradles for each of my devices. I run the latest Palm Desktop Software. I also bought a 4-way manual serial switch from Belkin. I plug all the different cradles into the switch box and then plug that into my computer's serial port so I can HotSync with any cradle without having to pull out cables. Another advantage of using serial cables is that I can use the pilot-xfer program to manually install and retrieve databases and programs without performing a full HotSync. Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Last cry for help
Gavin Peacock [EMAIL PROTECTED] wrote in message news:74994@palm-dev-forum... Ok, I can't resist a last cry for help... So there is a way to list and select the active network panel connection. This API has existed ever since OS 2.0 when netlib was introduced. The API does not allow you add a new network connection, but you can make an existing one active. [...] I hope this helps. --- Gavin Thanks for the info Gavin. Can you solve the mystery of the missing NetServiceAPI library? I've scoured the palmos.com web site and I can't find it. I've even found dead links to knowledge base articles about it. Has Palm upgraded it to support new OS versions? Is there a version which supports removing a network service? Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Freeing Memory - Approach
John, It occurs to me that what you suggest has a subtle bug: MemHandle h; void *p; h = MemHandleNew(100); p = MemHandleLock(h); // Use p for a while // ... MemPtrUnlock(p); MemPtrFree(p); By the time your reach MemPtrFree, p is invalid. You should never reference a pointer after the associated handle has been unlocked because it may move in memory. Admittedly it's not very likely that the pointer will be moved if MemPtrFree() immediately follows MemPtrUnlock, but it's still possible. Bob Whiteman Senior Software Engineer Pico Communications John Leung [EMAIL PROTECTED] wrote in message news:74794@palm-dev-forum... For you second method, you'll still need to unlock the pointer with MemPtrUnlock(testPtr); -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Freeing Memory - Approach
Andy Yeong [EMAIL PROTECTED] wrote in message news:74842@palm-dev-forum... Bob Whiteman [EMAIL PROTECTED] wrote in message news:74827@palm-dev-forum... It is my understanding that if you use MemHandleFree() with MemHandleNew() things go smoothly. The same is true if you use MemPtrFree() with MemPtrNew(). But if you use MemPtrFree() with MemHandleNew() the OS has to call MemPtrRecoverHandle() and then call MemHandleFree() for you. It still works but it takes more time. Wow ! That's great. But I never managed to retrieve the handle using MemPtrRecoverHandle when the memory was created using MemPtrNew(). Is there any other command whereby I could retrieve ? Actually, there is no underlying handle. I'm sorry, I have to take back my earlier comments about MemPtrFree. I just looked at the memory manager source code and I've been mistaken. When you allocate a handle using MemHandleNew() and then free it using MemHandeFree() the OS uses the following functions: MemSemaphoreReserve() PrvHandleCheck() PrvPtrFree() MemSemaphoreRelease() If you allocate a handle using MemHandleNew() and then free the pointer it using MemPtrFree the OS uses these functions: PrvPtrCheck() MemSemaphoreReserve() PrvPtrFree() MemSemaphoreRelease() So the only difference is that one calls PrvHandleCheck() and the other calls PrvPtrCheck. They perform very similar checks, so the two have similar runtimes. The problem that I encounter using MemPtrNew() is that it doesn't allow me to resize (increase) the memory size using MemPtrResize(). Thus, I have to use MemHandleNew() instead. Is there work around ? There's three resize functions: MemPtrResize(), MemHandleResize() and DmResizeHandle(). When reducing the amount of memory allocated they always succeed. They generally follow these steps: 1. If the amount of memory is decreasing, the resize occurs immediately and succeeds. 2. If the memory space just beyond the current allocation is free (or can be made free?), the resize occurs immediately and succeeds. 3. If the memory is movable it moves the memory to a larger block of space and performs the resize. The problem is step 3. Memory allocated using MemPtrNew() is never movable, and handles are only movable if they are unlocked. There's a couple ways that you can make a MemPtrResize wrapper function which always succeeds: The first technique would be to allocate the maximum amount of memory you will ever need so that the allocation never increases. The second technique would be a function like the following: Err MemPtrResizeWell( void **pp, UInt16 cbOldSize, UInt16 cbNewSize ) { void *pNew; pNew = MemPtrNew( cbNewSize ); if ( !pNew ) { // Out of memory return memErrNotEnoughSpace; } MemMove( pNew, *pp, cbOldSize ); *pp = pNew; return 0; } There are three drawbacks to this function: First, the pointer will change. If the pointer is being used by a field (set by FldSetTextPtr()) then that field may cause a crash the next time it redraws or the text changes. Second, it has a high peak memory usage. If cbOldSize+cbNewSize is larger than the amount of free dynamic heap this function will fail, even if cbNewSize is less than the amount of free dynamic heap. Third, you must keep track of how large the pointer was before the resize. Thanks for all comments ! It's very enriching. I'm glad to help. Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Last cry for help
Ralph Krausse [EMAIL PROTECTED] wrote in message news:74916@palm-dev-forum... I need some explanation here. I am simply or I thought, trying to change some settings in my application so users don't have to manually go to the perfs application and change it themselves. First I want to change under pref-connection from Palm Modem US/Canada to Direct Serial. Second, under pref-Network, I want to change the Service from Aminet to WindowRAS. Ralph, I think I can explain what's going on. There's two different systems within the Palm OS that need to be configured. The first is the connection panel. This can be straightforwardly updated using the Cnc* functions defined by the Connection Manager. According to my copy of the documentation these were created in the new OS 4.0. The second system is the network panel. As I understand it there's a network database that holds a list of services and their configurations, and possibly other databases as well. Somewhere there is also a database which stores information about the currently selected network service. The biggest difficulty is that the network stack is running in the only other thread on the device. There's no official way of notifying that other thread that the databases have changed. Another difficulty is that the network system and its data formats have changed several times over the last few versions of the Palm OS. Palm Developer Technical Support once made available the NetServiceAPI, an /unsupported/ library which gives you the ability to create network services, modify network services, and set the current active service. I believe that they no longer make this available because it has not been updated to support the newest versions of the Palm OS. Without this library, I don't think there is any way to do what you want. I suggest that you join the Palm OS Developer Program and get an Advantage Level Membership. http://www.palmos.com/dev/programs/pdp/index.html Then you can submit your request to them as a developer support incident. Perhaps they can provide an updated version of the NetServiceAPI library. If you do join, please let me know what they say. Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Re: Freeing Memory - Approach
Andy, It is my understanding that if you use MemHandleFree() with MemHandleNew() things go smoothly. The same is true if you use MemPtrFree() with MemPtrNew(). But if you use MemPtrFree() with MemHandleNew() the OS has to call MemPtrRecoverHandle() and then call MemHandleFree() for you. It still works but it takes more time. Actually, I never use MemHandleNew(). If I'm going to bother making a handle I allocate it in database memory using DmNewHandle(), passing in the DmOpenRef of any database that my application has open for the first argument. This gives the benefit of a moveable chunk of memory, plus it doesn't take up any dynamic heap space. The drawback is that I have to use DmWrite(), but there's reasonable ways to manage that. If it's too much of a burden I just allocate a pointer instead. Bob Whiteman Senior Software Engineer Pico Communication -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: NetServiceAPI library bug
I'm using the NetService library provided by Palm developer technical Are you talking about NetLibIFSettingSet (UInt16 libRefNum,UInt32 ifCreator, UInt16 ifInstance,UInt16 setting, void *valueP, UInt16 valueLen) or there are other api i dont know about? This is a different library. It used to be available for download at http://oasis.palm.com/dev/kb/samples/2370.cfm but now that page is 404. It's a library that lets you create and modify network services in the network preferences panel. The only functions provided are LoadService(), SaveService() and FreeNetworkPrefs(). It's not an officially supported API but rather a workaround API since there's no officially supported way to create and modify network services. There's a few posts about this library in the palm-dev-forum. You can find them if you do a search for NetService. Bob Whiteman Senior Software Engineer Pico Communications -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
OS Compression? (was: RE: m100 EFIGS oddness)
Application compression in the OS, huh? Is the decompression algorithm exposed anywhere? What algorithm is used? Also out of curiosity, bitmaps can be compressed using scan line compression or run length compression. RLE is a pretty standard compression algorithm, but what is scan line compression? (I'd like to decide which compression will be better for the images in my resources, but I'd rather not have to make that decision by trying it out on every image. Knowing the compression algorithm would help.) Thanks in advance, -Bob Whiteman -Original Message- From: David Fedor [mailto:[EMAIL PROTECTED]] Sent: Friday, September 08, 2000 4:06 PM To: Palm Developer Forum Subject: Re: m100 EFIGS oddness [...]As for Security: ROM space was very tight and so they had to keep that application compressed in ROM, and the appropriate language of it gets decompressed and installed in RAM once you've chosen your language. Having 5 languages all available takes a good deal of memory, and there wasn't quite enough without the Welcome app doing a little compression on the Security app. -David Fedor Palm Developer Support -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
PalmOS 3.5 8-bit Colour Palette
The PalmOS Programmer's Companion indicates that the named HTML colour gray (0x808080) is a member of the PalmOS palette. I checked on a device, and the emulator, and this colour is not present. However, the Programmer's Companion writes that only the first 231 entries in the palette and the last entry are defined. Summing the total number of colours up: 216 Web-safe colours 10 greys, giving us all posible values of grey. + 6 named HTML colours 232 Which seems to be consistent. However, entries 0xE6 and 0xFF are both black in my tests. Is this an error in documentation? Or is this an error in implementation? If it is an error in implementation, will it be corrected in future revisions? Will index 0xE6 become 0x808080? Thanks in advance, -Bob -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: URGENT !!!! Inet with AlmSetProcAlarm
Actually the OmniSky device, as well as the other Novatel Minstrels I've used, have a sleep mode. In this mode the Minstrel stays registered with the CDPD network in a way analagous to a cell phone that's turned on but not currently making a call. When the Minstrel is in this mode it can receive a connection that includes an identifier that's analagous to a TCP port number. The Minstrel application on the Palm receives this connection and based upon the port number launches a particular application and sends it the data that was sent in the connection. So basically it is possible to receive notifications via the CDPD network and Novatel Minstrel devices. The major drawbacks are that the sleep mode and "port" settings are comparatively difficult to configure, and that this sleep mode drains the Minstrel batteries. In my experience the battery drain was severe, and that far outweighed the usefulness of notification...but but maybe that's because I had a poor battery in my Minstrel. -Bob Whiteman -Original Message- From: Fitzpatrick, Joe To: Palm Developer Forum Sent: 8/22/2000 10:58 PM Subject: RE: URGENT Inet with AlmSetProcAlarm I'm not sure why you would need to create a shared library. Why not just schedule an alarm like other applications (ex. Datebook, Clockworks, etc.) and do your work in response to the alarm? As for feasibility, neither a Palm VII or an Omnisky equipped V is particularly well suited to background internet polling. The VII will not make a wireless connection unless the antenna is up. Although I haven't played with it as much, the Omnisky modem/software also seems 'user initiated transaction' oriented. Neither unit is blindingly fast and can basically hang the system for fairly long periods of time. I can't speak for other users, but a program would only need to freeze my Palm for 10-20 seconds once while I'm trying to enter a phone number, etc. for me to not only delete it, but pay a huge guy named Spike to beat up the author. People have been talking more sophisticated wireless options as Handspring modules, but I don't know what (if any) products are actually shipping. Good Luck, -jjf -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Get visual artifacts using WinCopyRectangle() to drag icons
-Original Message- From: Chris Dunworth To: Palm Developer Forum Sent: 8/22/2000 11:27 PM [...] When the user drags an icon up and/or to the left, a "trail" of old icon images is left behind. Dragging down or to the right never causes this problem. I cannot find errors in my drawing or saving/restore code (which of course means their aren't any ;-) ). Does this problem as I describe it set off any bells with any of you? I'd love to hear any theories as to why this is happening. This sounds like a classic off-by-one error. The above problem is what you would see if the extent.x and extent.y in one or more of your RectangleType structures was less than it should be. The classic problem with rectangles is that you don't know if the right and bottom edges of the rectangle are inside or outside the rectangle. I think that you're guessing that they are inside but the Palm OS treats them as if they are outside. -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Timed Splash Screen
You can use the alarm manager to send a launch code to your application after a specified amount of time. Look at the doucmentation for AlmSetAlarm(). That way your application's event loop keeps running, but after a specified amount of time it will be notified that it's time to move on to the next form. -Bob Whiteman -Original Message- From: Timothy Astle [mailto:[EMAIL PROTECTED]] Sent: Wednesday, August 23, 2000 11:37 AM To: Palm Developer Forum Subject: Re: Timed Splash Screen Why not just load the next form using FrmGotoForm()? You probably don't need to generate an event, etc.. FrmGotoForm should handle all this for you. Maybe I misworded my problem. I do have a FrmGotoForm(...) function which sets it to the next form. However, there are no events being sent to cause my event handler to tell it that it's time to "move to the next form". If I click on the screen constantly, it will go to the next form onces the time difference is valid. If it isn't, it stays put. I need a way to constantly poll. Right now I'm getting my events from the main event loop. EvtGetEvent(event, evtWaitForever); However, I'm weary of using another EvtGetEvent and loop inside of that event handler because it seems sloppy to me. Is that the only way? + Timothy D. Astle Embedded Systems Programmer ALT Group Inc. + "People who can smile when things go wrong has thought of someone else to blame it on." -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: URGENT !!!! Inet with AlmSetProcAlarm
Yeah, CDPD coverage is getting there slowly, and the CDPD protocol has a very slow and comparatively poor cell handoff mechanism, so if you're moving at all it tends to drop connection for up to several seconds without warning. CDMA is a much more solid connection, and although the theoretical bandwidth is lower, in practice the stability of connection in my opinion far outweighs the somewhat smaller bandwidth. The one that I want to know more about is Ricochet. I remember looking into their 9600 baud connection and finding out that if you were moving quickly, say on a bus or train, the handoffs couldn't happen fast enough and so the connection couldn't be maintained. If their new 128kbaud network lacks this limitation and has good coverage it will make all other connections obsolete, IMO. -Bob Whiteman -Original Message- From: Fitzpatrick, Joe [mailto:[EMAIL PROTECTED]] Sent: Wednesday, August 23, 2000 12:26 PM To: Palm Developer Forum Subject: RE: URGENT Inet with AlmSetProcAlarm I've actually been underwhelmed with the Omnisky. Part of it is that the coverage seems terrible in Southern Cal. The first time I saw one I tried to pick it up and use it blind (always a good usability test) and couldn't get anywhere. On the other hand, it looks nicer than a VII... ;) -jjf -Original Message- From: Bob Whiteman [mailto:[EMAIL PROTECTED]] Sent: Wednesday, August 23, 2000 6:50 AM To: Palm Developer Forum Subject: RE: URGENT Inet with AlmSetProcAlarm Actually the OmniSky device, as well as the other Novatel Minstrels I've used, have a sleep mode. In this mode the Minstrel stays registered with the CDPD network in a way analagous to a cell phone that's turned on but not currently making a call. When the Minstrel is in this mode it can receive a connection that includes an identifier that's analagous to a TCP port number. The Minstrel application on the Palm receives this connection and based upon the port number launches a particular application and sends it the data that was sent in the connection. So basically it is possible to receive notifications via the CDPD network and Novatel Minstrel devices. The major drawbacks are that the sleep mode and "port" settings are comparatively difficult to configure, and that this sleep mode drains the Minstrel batteries. In my experience the battery drain was severe, and that far outweighed the usefulness of notification...but but maybe that's because I had a poor battery in my Minstrel. -Bob Whiteman -Original Message- From: Fitzpatrick, Joe To: Palm Developer Forum Sent: 8/22/2000 10:58 PM Subject: RE: URGENT Inet with AlmSetProcAlarm I'm not sure why you would need to create a shared library. Why not just schedule an alarm like other applications (ex. Datebook, Clockworks, etc.) and do your work in response to the alarm? As for feasibility, neither a Palm VII or an Omnisky equipped V is particularly well suited to background internet polling. The VII will not make a wireless connection unless the antenna is up. Although I haven't played with it as much, the Omnisky modem/software also seems 'user initiated transaction' oriented. Neither unit is blindingly fast and can basically hang the system for fairly long periods of time. I can't speak for other users, but a program would only need to freeze my Palm for 10-20 seconds once while I'm trying to enter a phone number, etc. for me to not only delete it, but pay a huge guy named Spike to beat up the author. People have been talking more sophisticated wireless options as Handspring modules, but I don't know what (if any) products are actually shipping. Good Luck, -jjf -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Free Handle
It is possible for a program in the Palm OS to have a particularly nasty bug: If you create a handle in database memory, attach it to a database, and then free the handle you'll start to get "Free handle" errors when working with that database. I found and fixed such a problem in my program, but there's still one problem left to solve: Once you have a device that is in this state, how do you get rid of this corrupt database? Using the application launcher to delete the application which has this database will crash with "Free handle", as will using a utility such as Insider to delete the database. HotSync and pilot-xfer both bail when they try to do anything with the database. The only method of removing the database that I have found is to use pilot-xfer to list (pilot-xfer -l) and back up all the databases on the palm except for the corrupt one (using pilot-xfer -f on each of the files, not pilot-xfer -b). Then hard-reset the device to clear all memory and restore all the backed up databases. Does anyone know of an easier way of nixing a corrupt database? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Bitmap family
I'm using Constructor version 1.5b7 (that's the latest version, right?) to create a bitmap family. All I want to do is get a color bitmap created in constructor to show up in the emulator using a Palm IIIc ROM. So here's my steps: Ctrl-R to create a new resource: Resource type "Bitmap" Resource name "BMP" Resource ID "5000" Double-click the new bitmap Under the Colors menu, choose "256 colors" Under Options, choose "Set Image Size" and set it to 30x30 Scribble on the bitmap in several colors. Ctrl-R to create a new resource: Resource type "Bitmap Family" Resource name "FAMILY" Resource ID "5001" Double-click the new bitmap family Change the width and height to 30. So... um...now what? There's an empty list of "Family Items", but I can't figure out how to add the new bitmap to the family. I can drag the bitmap onto the dialog, but that doesn't do anything. I can drag a form bitmap from the resource catalog onto it, but that doesn't do anything either. Hmm, copy the bitmap, click the bitmap family, but "Paste resource" is disabled... Wow. Let's see... Drag BMP onto FAMILY in the list of application resources. Nope. Click the bitmap, edit-select all, click the family, still can't paste. Ctrl-drag? Shift-drag? Ctrl-shift-drag?? Now, I've been around many different kinds of computers and used countless programs. I like to think I'm a computer expert. But for the life of me I can't figure out how to create a bitmap family. If I resort to the help file, the topic about bitmap families tells me how to create the bitmap family but not how to add bitmaps to the family. Also, the two images on this help page are broken with the messages: The picture "Bitmapfam.bmp" is missing! and The picture "Bitmapfam2.bmp" is missing! So how is this supposed to work? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Bitmap family
-Original Message- From: [EMAIL PROTECTED] Sent: 8/23/2000 8:05 PM OK, let me get this straight, you can't add stuff into the bitmap family? Exactly. Try Ctrl-R after highlighting "Family Items". Personally I use Ctrl-K all the time, and let Contructor set up the new item with default values. Wow, after myself and four other developers poking at this program for a total of an hour, none of us found that. That's exactly what I was looking for. I had tried clicking the space below "Family Items", the title bar of the window and a few other places, but I never noticed that clicking the words enabled the menu items. Thank you for pointing this one out to me. [...] A had problems getting used to the Mac oriented UI as well. Sure it looks nice, but I'ld rather have something that is more friendly. Me too...either that or a working and complete help file. -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Does app get notified when Palm switches off
You might need to call KeySetMask() first. This function filters out certain keyDownEvents. After that, you can have your application watch for vchrAutoOff, vchrPowerOff and/or hardPowerChr. Each of these keys is described in the OS 3.5 SDK in Chars.h -Bob Whiteman -Original Message- From: Richard Anderson [mailto:[EMAIL PROTECTED]] Sent: Tuesday, August 22, 2000 8:45 AM To: Palm Developer Forum Subject: RE: Does app get notified when Palm switches "off" Hi, I dont get posted a keydownEvent when I press the power button. Rik -Original Message- From: Nesse, Rustin [SMTP:[EMAIL PROTECTED]] Sent: 22 August 2000 16:10 To: Palm Developer Forum Subject:RE: Does app get notified when Palm switches "off" Well, there's a keydownEvent generated by pressing the power button... might want to take a gander at the header KeyMgr.h. Hope that helps! -Rus -Original Message- From: Richard Anderson [mailto:[EMAIL PROTECTED]] Sent: Tuesday, August 22, 2000 4:15 AM To: Palm Developer Forum Subject: Does app get notified when Palm switches "off" Hi, Does the Palm get notified when the Palm is switched off. If I want my app to always start from the beginning, how do I do this if it was running when the Palm was switched off. I would like to be able to close my app when the Palm is turned off. Thanks Rik -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: M100 ROM images / POSE version for them - when?
That's great news! On the emulator forum you've mentioned some bug fixes and enhancements that won't be available until 3.0a7 is released. Is that what you'll be shipping? -Bob Whiteman -Original Message- From: [EMAIL PROTECTED] To: Palm Developer Forum Sent: 8/14/2000 2:17 PM Subject: Re: M100 ROM images / POSE version for them - when? Poser's in final testing. I don't know when QA will give the final OK, but we're not finding any show-stoppers, so hopefully in a few days. The ROMs will be posted at the same time. -- Keith Rollin -- Palm OS Emulator engineer -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: DmWriteCheck fails.
You haven't shown what src, nilP and tmpare, but one thing I noticed is that your first three DmWrites use nilP for the 2nd argument but the fourth DmWrite uses tmp for the 2nd argument. What is tmp? -Bob Whiteman -Original Message- From: Kshama Sathaye [mailto:[EMAIL PROTECTED]] Sent: Monday, August 14, 2000 12:51 PM To: Palm Developer Forum Subject: DmWriteCheck fails. Hello, I'm trying to write to a locked handle using DmWrite, but for some reason, I keep getting the dmErrNotValidRecord error and I have no clue how to fix it. Help is greatly appreciated. Here is what i'mdoing. custHandle = DmNewHandle(size); dest = (PackedCustomerPtr) DmHandleLock(custHandle) ; err = DmWrite(dest, (ULong)nilP-orderID, src-orderID , sizeof(src-orderID)); ErrFatalDisplayIf(err, "Couldnot pack record"); err = DmWrite(dest, (ULong)nilP-timeStmp, src-timeStmp, sizeof(src-timeStmp)); ErrFatalDisplayIf(err, "Couldnot pack record"); err = DmWrite(dest, (ULong)nilP-totalQuantity, src-totalQuantity, sizeof(src-totalQuantity)) ; ErrFatalDisplayIf(err, "Couldnot pack record"); err = DmWrite(dest, tmp, src-expMonth, sizeof(src-expMonth)) ; ErrFatalDisplayIf(err, "Couldnot pack record"); here .. while the first 3 DmWrite()s work, the 4th one doesnot !! should the datatypes matter ?? should the order of DmWrite matter ?? and if the record is invalid, how do the first 3 work ?? Any help is appreciated .. I just dont know how to proceed if this thing fails !! thank you .. -kshama -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: SysUIAppSwitch() SysAppLaunch()
Thanks for the clear explanation, David. I'm glad to know we're not leaking memory owned by the system...my understanding is that since the system never exits, the memory would be "permanently" leaked. -Bob -Original Message- From: David Fedor [mailto:[EMAIL PROTECTED]] Sent: Thursday, August 10, 2000 5:38 PM To: Palm Developer Forum Subject: Re: SysUIAppSwitch() SysAppLaunch() ...you have to use MemPtrSetOwner( ptr, 0 ) to make the pointer belong to the system, and thus not get free'ed... what should the callee do with this memory once it is done with it? MemPtrFree() seems to cause big problems. Don't do anything to that pointer, because when the callee (the second app) quits, the system automatically frees that pointer. There's no way to prevent it from doing so. (If you need more control, pass the info in a handle and pass a pointer to a small buffer which contains that handle... having set the owner of the handle to zero as well.) I'm pretty sure this is covered in the docs and/or FAQs, but I see it isn't in the reference entry for SysAppLaunch. I'll ask for it to be added, since that's the most natural place to say it. -David Fedor Palm Developer Support -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
SysUIAppSwitch() SysAppLaunch()
When using SysUIAppSwitch() and SysAppLaunch() you can provide a pointer to a buffer in which you pass parameters. It seems that you have to use MemPtrSetOwner( ptr, 0 ) to make the pointer belong to the system, and thus not get free'ed when the OS does its automatic garbage collection when the app exits. Now, what should the callee do with this memory once it is done with it? MemPtrFree() seems to cause big problems. -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Pen Q out of sync
I'm having a Palm OS problem which results in the error "Pen Q out of sync". The repro isn't 100%, but basically it requires a pen down and a lot of dragging within my application. I've eyeballed the code involved but I don't know what is required to even generate this error, so I'm not sure what I'm looking for. I found several conditions in SysEvtMgr.c in the OS source code which would result in this error, but I don't pretend to understand what's going on there. Does anyone have any leads for me? Thanks in advance, -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Palm developer support email bouncing
From: Andrew Lathrop [mailto:[EMAIL PROTECTED]] [...] The best bet seems to be to post to the groups. There are a few Palm people who troll through here doing there best to answer. They don;t eply to individual emails, but who knows, others in the group may be able to help. Andrew I appreciate the sound advice, Andrew. Before sending the two questions to Palm developer support I posted them here first. There were no replies to either one, and I suspect that's because these were previously unknown bugs in the 3.5 OS. -Bob -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Palm OS 3.5: FldNewField changes text on button
Sadly, I have another bug which I believe is in Palm OS 3.5. I have a form with many controls on it, including a button with the text "New". I create a field using FldNewField, and immediately after that call the button's text is changed to "Nqw". I verified this by looking into the form pointer's array of objects before and after the FldNewField call. The IDs of the created control and the button are different. I verified that this doesn't occur in OS 3.0 release, OS 3.3 release or OS 3.3 debug. I verified that this still occurs with the new OS 3.5.2 patch. I found nothing describing this kind of issue in the six articles which contain "FldNewField" in the Knowledge Base. Does anyone have any ideas why this might be happening? Can anyone suggest any workarounds? Unfortunately I can't escape dynamic UI elements because of the nature of the program I'm writing. -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Rumors, disclosing, and platforms, part 1
I agree with what you say about leaks, rumors and NDAs, David. It all sounds like intelligent business practices. I have a couple additional comments below. -Original Message- From: David Fedor [mailto:[EMAIL PROTECTED]] [...] At 2:51 PM -0700 8/7/00, Bob Whiteman wrote: I entirely disagree with this statement. With each new PalmOS version there have been inevitable bugs and incompatibilities. It's the nature of computers. For instance, there is a bug involving gadgets which are set unusable that was introduced with Palm OS 3.5. This bug rendered my software entirely unusable, even though it worked perfectly in all previous OS versions. Right, which is precisely why you got that software more than 6 months ago. Heck, at PalmSource if people found good enough bugs, they even got fixed before it went final. Aack, more quoting out of context! I was using 3.5.0 as an example of a bug being introduced with a new OS version. I wanted to point out that because of this possibility, developers need access to the ROMs before they are made available on devices. Palm did a good job with OS 3.5.0! I was able to use the ROMs before devices with OS 3.5.0 were available. That was exactly the support I needed. Please don't think I'm criticizing Palm for doing things appropriately in the past. [...] A few cool things like turning the system on briefly when you hit up-arrow and it shows the time and goes off a few seconds later... neat, and could have been done with a 3rd party hack. (And sort of was done via a hack.) The platform didn't change; the bundled apps and the device exterior did. [...] I have one minor point to add here. Compatability with a hack is not, and cannot be, guaranteed by any software developer. A hack can change all the rules. Therefore, it is acceptable to the user and the developer to say, "Sorry, this software doesn't work with that hack, so disable the hack when using the software." But we can't say that when the change is in the ROM image. -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Palm OS 3.5: FldNewField changes text on button
-Original Message- From: Peter Epstein [mailto:[EMAIL PROTECTED]] This sound suspiciously like the adjust pointers bug I heard about a while ago. When adding objects to a form, the structure of the form in memory needs to be adjusted so that pointers continue to point where they should after moving stuff around to make room. The code to adjust these pointers isn't pretty: it just looks for things that look like pointers. Sometimes things that aren't in fact pointers end up being adjusted, with the consequences you're seeing. I don't know how best to work around this bug. Maybe someone who knows more about it can help? I haven't heard of this bug before...is it a bug in the OS? I'm guessing that the code to which you're referring is FrmAddSpaceForObject() in the OS. I was unable to find any references to this bug in the Knowledge Base or in archives of this mailing list on eGroups. The one major catch I know of with using FldNewField is that you have to be aware that the form pointer may change, but I'm quite aware of that and always use the new form pointer returned by FldNewField (or I just call FrmGetActiveForm). In this case I believe the form pointer isn't the issue because it doesn't move in memory. -Bob -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Palm OS 3.5: FldNewField changes text on button
David, Thanks for the information. It's unfortunate that the set of supported OSes for my application happens to be the set of OSes which have this bug. Regarding which approach to use to address this problem: I think it's unreasonable to expect all the users out there to upgrade their devices. If we required a particular upgrade/patch in order for our software to work, I guarantee that our support people will get calls from end-users having problems with this patch. Also, would the patch require a flash? If so it wouldn't address those users who have devices without flashROM. One other developer here prefers an OS patch for the specific reason that it makes it clear that this issue is a PalmOS issue and not our software...an important distinction for a big 1.0 release. Linking a library into the application, however, looks like a fine solution to me as long as it's not unreasonably large or slow. The other developer here doesn't like the library solution because it means we have to go through an extra release cycle to include this library. If Palm developers create a library it'll likely arrive after this product ships, so it'll look to end-users like we had a bug which we had to fix with a 1.1 release. The effort of shipping an extra drop is painful. Also, if you compare one release of a patch from Palm versus one release of every appliation which uses dynamic UI elements each having to ship a patch, it'd be easier from the end user's point of view to just have an OS patch. Now, for my application, the most important issue is whether Palm can release a library quickly enough to make it into the first release. Do you know how long it would take to package up the OS 4.0 fixes? -Bob Whiteman -Original Message- From: David Fedor [mailto:[EMAIL PROTECTED]] Sent: Tuesday, August 08, 2000 4:21 PM To: Palm Developer Forum Subject: RE: Palm OS 3.5: FldNewField changes text on button I've been trying to make progress on this issue. We've fixed the routines in the OS for the next major OS release (of which we have no announcements yet) but that wouldn't address the fact that this has existed ever since 3.0. It hardly ever was an issue until the dynamic heap started getting large, and forms started to often need to move when adding items to the form object. I'm investigating the possibility of having either a static library for developers to link into their applications, or just providing the fixed source to compile into your applications, or something like that. Thoughts and preferences? Suggesting that we do a system update for every device running 3.0 to 3.5 would make some fine folks in our QA department a little annoyed at me :-( And relatively few applications use these functions, so it might well make sense to have this built into applications who care. -David Fedor Palm Developer Support -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Palm OS 3.5: FldNewField changes text on button
From: Peter Epstein [mailto:[EMAIL PROTECTED]] [...] I haven't heard of this bug before...is it a bug in the OS? I'm guessing that the code to which you're referring is FrmAddSpaceForObject() in the OS. Yes, it's an OS bug. With these hints I was able to find PrvFixupPointers in the OS source code. Thanks for the tip, Peter. I keep wondering, WHAT was the developer on when he wrote this code?? This has caused me untold amounts of grief since my application makes extensive use of dynamic form elements. This could explain intermittent "Bad form" errors, UI elements losing their state, and a number of other issues I've experienced. I just heard about it in passing. Don't know the details, just that in moving the form objects within the block of memory used for the form, it needs to update pointers, and this is done by scanning the moved memory for things that appear to be pointers. If you can avoid doing things which cause stuff to be moved, you'd be able to work around the bug, but I don't know whether this is feasible. I've been thinking about how to work around this. The only thing I can think of is make sure that the form never has to be relocated. This would require making sure that the form structure is at its highest memory usage when the appliation starts. I could create a number of dummy UI elements in constructor, and just before creating a new UI element I could remove one of the dummy ones, but this gets me nowhere...I might as well just preallocate my own large pool of each type of form element and avoid the dynamic form element APIs entirely. Setting a high watermark is tricky because I can't really know how many form elements I'm going to need at design time, and it's very wasteful of dynamic memory. Can you or anyone else on this list provide any more information? Specifically, are there any known workarounds? Which OS versions have this bug? Is this bug officially documented anywhere? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: New products from Palm, Inc.
From: Bradly J. Barton [mailto:[EMAIL PROTECTED]] [...] What do I want from Palm? I'd like to see an announcement like today's... only a couple weeks before they actually hit the shelves. Included in today's excellent announcement was information that it would not affect current software. As developers, we knew that would be the case, [...] I entirely disagree with this statement. With each new PalmOS version there have been inevitable bugs and incompatibilities. It's the nature of computers. For instance, there is a bug involving gadgets which are set unusable that was introduced with Palm OS 3.5. This bug rendered my software entirely unusable, even though it worked perfectly in all previous OS versions. What would've happened if my software had already been released to the public when OS 3.5 became available to users? A customer buys a brand new device, installs my software and it doesn't work at all. The user contacts my tech support and all I can say is, "I don't know why it doesn't work." That's a very effective way to lose a customer permanently. Developers need to see platforms before they are released. That way if there is some incompatibility in the new OSes I can find out what that is, fix it, and release a new version...or at the very least get my support story straight before I start losing customers. Palm has just done a great disservice to its developers. -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Can't use Palm device after emulator?
The emulator can be configured to use one of your PC's serial ports as the serial port on the emulated Palm. If your cradle and real device are plugged into the same port while the emulator is still running you'll get that conflict. To solve this problem you can close the emulator before hotsyncing or debugging on the real device. Alternately, you can configure the emulator to not use a serial port at all by right-clicking the emulator, choosing "Properties" and changing "Serial Port" to "None". If the emulator is configured to a different port than the cradle it's still possible that you're getting a conflict. On a typically configured PC, COM1 and COM3 share an interrupt, and COM2 and COM4 also share an interrupt. If your cradle is on COM1 and your emulator is using COM3, the two probably can't share that interrupt. If this is the problem, the solutions are the same, or you can reconfigure the emulator to use a port which doesn't conflict with the cradle. Good luck! -Bob Whiteman -Original Message- From: DIAMOND JEFF To: Palm Developer Forum Sent: 8/3/2000 10:46 PM Subject: Can't use Palm device after emulator? I'm currently using the most uptodate versions of CodeWarrior and the Debugger (Update 1, patch, etc.) What I've found is that if I'm doing a programming session using POSE, nomatter how cleanly I exit the session, when I try to THEN try out my program on a real Palm, I get a "Serial port is busy" when it starts the download. The only thing that seems to remedy this is to reboot my computer. In fact, after I've done the POSE debugging, I can't even do a hotsync without the same effect. What's tying up the serial port? Thanks folks! - Jeff -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Converting Palm fonts to X .pcf fonts (was RE: Creating fonts)
Thank you Mostapha, with that lead I was able to find a couple tools capable of generating Palm fonts. Now my next problem is a bit more difficult: I would like a Unix X application to be able to display these Palm fonts. Is there a utility which can convert Palm fonts, such as the .pft files generated by FontEdit, into .pcf format? Thanks, -Bob Whiteman -Original Message- From: Mostapha BOUTERFASS [mailto:[EMAIL PROTECTED]] Sent: Thursday, August 03, 2000 11:45 AM To: Palm Developer Forum Subject: Re: Creating fonts personnaly i use Pilot Font Editor Mostapha Bouterfass - Original Message - From: Bob Whiteman [EMAIL PROTECTED] To: Palm Developer Forum [EMAIL PROTECTED] Sent: Thursday, August 03, 2000 6:45 PM Subject: Creating fonts Palm OS 3.0 and later have FntDefineFont, but there's no information about the format of fonts or about supported tools to generate Palm fonts. One web page in the Knowledge Base mentioned that there are 3rd party tools appearing which allow one to create Palm fonts, but there was no more specific information. So how does one create a Palm font? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Clipper mini-font
Thanks for the tip, Tom. I've poked around inside Clipper.prc. None of the resources look promising because they're all bitmaps, icons, forms or strings...nothing that looks like a font resource. I did find a couple occurrences of "Font" and 'NFNT' inside the code 1 resource. One occurs near "OpenFont" and the other occurs near "CloseFont". Now my problem is that I don't know how to properly grab the structure out of clipper. Does anyone have any hints on how to grab this font? Thanks, -Bob Whiteman -Original Message- From: Tom Zerucha [mailto:[EMAIL PROTECTED]] Sent: Thursday, August 03, 2000 1:18 PM To: Palm Developer Forum Subject: Re: Clipper mini-font On Thu, Aug 03, 2000 at 11:49:29AM -0700, Bob Whiteman wrote: The clipper appliation that's in the ROM for Palm VII devices apparently has a special mini font used for some data displayed by .pqa files. Is this a built-in font on the Palm VII? If so, is it available on other ROMs as well? It is in the Clipper resource database. You would have to open clipper (as resource DB) to access that font. -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: How to intercept Graffiti keyboard command?
Really? That's not what I would've expected. Note that if you're using the usual event loop, your event handlers may not see the event. This is the kind of event loop you usually see: do { EvtGetEvent(); if (!SysHandleEvent()) if (!MenuHandleEvent()) if (!AppHandleEvent()) FrmHandleEvent(); } while (event.eType != appStopEvent); If you're not seeing it, maybe the keyDownEvent with vchrKeyboardNumeric is handled by the SysHandleEvent(), so none of your event handlers ever see it. You may need to insert another event handling function above SysHandleEvent. -Bob Whiteman -Original Message- From: Fitzsimons, Jeff To: Palm Developer Forum Sent: 8/2/2000 11:05 AM Subject: RE: How to intercept Graffiti keyboard command? Unfortunately, my keyDownEvent handler doesn't even trigger a breakpoint when the '123' is tapped, so it doens't appear to generate _any_ kind of key event. At least, not one that my app ever sees. Jeff -Original Message- From: Bob Whiteman [SMTP:[EMAIL PROTECTED]] Sent: Tuesday, August 01, 2000 4:45 PM To: Palm Developer Forum Subject: RE: How to intercept Graffiti keyboard command? I beleve that when the user hits the silkscreened 123 button you'll see a keyDownEvent with a character of vchrKeyboardNumeric. -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Symbol 1500
Thusitha, One approach you could use would be to write your own application which uses the scanner to read information, and then when a complete address book entry has been scanned, open the Address Book application's database and create a new record. Because the source code of Address Book is available you can find out the exact format of the data in the Address Book database. -Bob Whiteman -Original Message- From: Thusitha Batuwitage [mailto:[EMAIL PROTECTED]] Sent: Tuesday, August 01, 2000 6:58 AM To: Palm Developer Forum Subject: Symbol 1500 Hi Is there a way to be able to use the scanner in address book. [...] So back to my question, how do you accomplish the above task. (I do not want to modify the address book code itself). I would appreciate any thoughts on this. Thanks TS -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: How to intercept Graffiti keyboard command?
I beleve that when the user hits the silkscreened 123 button you'll see a keyDownEvent with a character of vchrKeyboardNumeric. -Bob Whiteman -Original Message- From: Fitzsimons, Jeff [mailto:[EMAIL PROTECTED]] Sent: Tuesday, August 01, 2000 4:28 PM To: Palm Developer Forum Subject: How to intercept Graffiti keyboard command? Hi all, My app's main form has no input fields but accepts alphanumeric input (it's a calculator, of sorts, but there's not room to display a numeric keypad all the time). I would like to pop up an on-screen numeric keypad when the user taps on the little '12345' dot in the silk-screened Graffiti area. I realize I'd have to write my own keypad, since the system's SysKeyboardDialog() requires an active field. However, I cannot seem to find any event relating to this. Is it possible to intercept the '12345' tap before the system gets ahold of it? Jeff -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: no-cache browser
Oddly enough, I never received the original post by Timothee Masquelier, but I saw the reply below. Timothee: Browse-it, the browser from Pumatech which will be available through Intellisync.com, supports the no-cache flag. If you'd like more info about Browse-it, please email me directly. Richard: Client caching is even more important on Palm devices because the connections are very different from desktop connections. If a user doesn't have a modem handy, can't get reception with wireless, etc. then all the user has left left is pages stored in the cache on the device. With Browse-it, the original HTML and images aren't stored; a much smaller encoded version of the page is stored. If one's device is really strapped for memory the cache size can be set to 0 bytes. Pages won't be stored on the device. -Bob Whiteman -Original Message- From: Richard M. Hartman [mailto:[EMAIL PROTECTED]] Sent: Monday, July 31, 2000 11:02 AM To: Palm Developer Forum Subject: Re: "no-cache" browser You mean that the browsers -are- caching pages? I would've thought that to be a huge drain on memory and an "un-feature" on a device as memory-tight as a Palm... -- -Richard M. Hartman [EMAIL PROTECTED] 186,000 mi/sec: not just a good idea, it's the LAW! Timothee Masquelier wrote in message 19258@palm-dev-forum... Hi there! Sorry about the non-development question, but do you guys know a browser for Palm that would support the: META HTTP-EQUIV="pragma" CONTENT="no-cache" tag ? Thanks, -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Programmatically perform a HotSync
Chris Percival mentioned another approach that might work. Here's some more details: Chars.h defines the following character: #define vchrHardCradle 0x0209 // Button on cradle pressed This character can be sent in a keyDownEvent using the EvtAddEventToQueue(). My guess is that this would simulate the user pressing the cradle button, which is generally configured to do a local hotsync (though the user can change this behavior). -Bob Whiteman -Original Message- From: Eric Sun [mailto:[EMAIL PROTECTED]] Sent: Thursday, July 27, 2000 9:20 AM To: Palm Developer Forum Subject: RE: Programmatically perform a HotSync If we need to short out some pin on the port to do this, I don't think Metrowerks or Palm has API that controls the phsyical hardware. I know that with some of the Symbol units, the hotsync is an application on the unit (i.e. not a hardware button, but an application button). Now, how can we get those code into our own program, is another question. That is kind of what's needed. To be able to access that HotSync program within my code. And thanks again for all the help so far! It is much appreciated! Thanks, __ Eric C.F. Sun Senior Software Developer RAD Specialist Q.Data Inc. Tel: (905)477-1367 x.277 Date: July 27, 2000 Time:12:07 -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: multi table relational databases
I've implemented a fairly simple relational database for an appliation. One problem with your suggested approach below is that it may be very tricky to sort the tables. Also, searches and inserts will take longer because they have to deal with a much larger Palm database. I used separate Palm databases for each table in the logical database. That way each table can have its own simple sort routine. Is there any particular reason why you don't want to create multiple Palm databases? -Bob Whiteman -Original Message- From: K. Chugh [mailto:[EMAIL PROTECTED]] Sent: Thursday, July 27, 2000 7:45 AM To: Palm Developer Forum Subject: multi table relational databases hi- i'm paranoid about introducing a new layer to my apps by using sybase ultralite, etc. does anyone know of any techniques for using multi table databases? i was thinking of opening one database and using the category for the table identifier then just inserting records in the appropriate "table." has anyone tried this? thanks, kevin -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Stepping into OS source code, and Palm OS 3.5 bug
I forgot to mention that I had a great deal of trouble diagnosing this problem. It would've helped if I could have stepped into the OS source code for some of the functions. I know that the Palm OS 3.5 source code hasn't been released yet, but if I had that would I be able to set up the CodeWarrior debugger to step into OS functions with full C source code support? -Bob Whiteman -Original Message- From: Bob Whiteman [mailto:[EMAIL PROTECTED]] Sent: Wednesday, July 26, 2000 11:50 AM To: Palm Developer Forum Subject: Stepping into OS source code, and Palm OS 3.5 bug Hi all, I have a program which includes a set of small buttons across the bottom of the main form. To manage the overall size of this set of buttons I have a gadget which overlaps the buttons. On all OSes other than 3.5, this works fine. But on Palm OS 3.5, the buttons which overlap the gadget never get a ctlSelectedEvent. It looks like 3.5 is ignoring the fact that the gadget is set to unusable. For now I've replaced the gadget code with something clunkier. Is this a known issue with Palm OS 3.5? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
RE: Message rejected
The person's original plan was to use the category attribute of individual records to split a single Palm database into multiple "tables". This category attribute is the one that's limited to 16 values. Though he only needs 14 tables, in the future if he needs to add more tables to the database, in which case he'll have to replace that mechanism with something else. I was just warning him of that possibility. If he instead uses the first byte of each record or some other mechanism to replace the built-in category mechanism he won't hit that limit. I think it would be simpler to just use multiple Palm databases, though. -Bob Whiteman -Original Message- From: Dave Lippincott To: Palm Developer Forum Sent: 7/27/2000 12:34 PM Subject: Re: multi table relational databases What does having 14 Tables/DBs have to do with the Palm only having 16 categories? (really only 15 if you count the obligatory 'all' category). Category use is definable or ignoble by the programmer. To get around the # limitation, you just ignore the PDB built in category mechanism and use your own if need be. I've seen applications from other developers with essentially an unlimited # of categories. - Original Message ----- From: "Bob Whiteman" [EMAIL PROTECTED] To: "Palm Developer Forum" [EMAIL PROTECTED] Sent: Thursday, July 27, 2000 1:58 PM Subject: RE: multi table relational databases Well 14 tables raises a new concern. You can only have 16 categories in a Palm database. If you were to add a couple more tables to your already extensive database you'll be out of luck. -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Stepping into OS source code, and Palm OS 3.5 bug
Hi all, I have a program which includes a set of small buttons across the bottom of the main form. To manage the overall size of this set of buttons I have a gadget which overlaps the buttons. On all OSes other than 3.5, this works fine. But on Palm OS 3.5, the buttons which overlap the gadget never get a ctlSelectedEvent. It looks like 3.5 is ignoring the fact that the gadget is set to unusable. For now I've replaced the gadget code with something clunkier. Is this a known issue with Palm OS 3.5? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/
Palm OS 3.5 list arrows
I have a program which creates list controls on the fly (LstNewList) and moves them around the display (FrmSetObjectPosition) and destroys them (FrmRemoveObject). I use a clipping rectangle to keep this movement within a display area on the main form. This works properly on all OSes between 3.0 and 3.3, but on 3.5 there's a problem. The 3.5 list control added arrows at the top and bottom which make it easy for the user to scroll the list. The problem occurs when the list overlaps the clipping region and I call LstDrawList. The majority of the list control is clipped properly but the arrow is drawn outside the clipping region, violating the WinSetClip call. This ends up overwriting parts of the main form outside the display area on the main form. I could redraw the rest of the main form every time this occurs, but that would cause flickering and would significantly slow down the drawing. Is there a fix for this issue? -Bob Whiteman -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/tech/support/forums/