I have added some new information to this problem.  I have marked the new
sections with ***

My application uses the HotSync Signal to initiate a read from an external
device.  This works fine in most cases, but one particular device sends a
second HotSync signal after the read has begun.

This has two unfortunate side effects.
1) The program attempts to read a second value from the external device
after it has completed the first read (This is solvable with a UI switch,
although I would prefer to keep it hidden from the user).
2) When the HotSync signal is triggered, the Palm OS kernel spends so much
time processing the signal, I miss a large chunk of the data coming in.

These problems all go away by turning off interrupts, but "everyone" says
don't turn off interrupts otherwise your cat will go blind, etc.  So does
anyone have a suggestion on how to prevent the aforementioned problems.

*** It turns out I do not need to turn off all interrupts.  Turning off
level 1 (lowest) interrupts is sufficient on DragonBalls (I have not tested
the EZ).  I have tried intercepting the sysTrapHwrIRQ1Handler, but the Palm
is not very enthusiastic about that.  I might be doing this wrong, I have
not played around with it much.

*** Will turning off the level 1 interrupts for 1/10 of second cause major
problems?  Has anyone overwritten the sysTrapHwrIRQ1Handler successfully?
Is it preferable to temporarily replace the IRQ handler vs turning of the
interrupt?  Is it better just to turn off level 1 interrupts rather than
all the interrupts?

Other relevant facts to consider when proposing solutions
a) The external hardware is designed by other companies, so redesigning it
is not an option.
b) I can not use the UART, since the data is not RS232 compatible (i.e. no
start or stop bits, and no frame information).

Thanks in advance

Oliver King-Smith


Reply via email to