home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 Mobile / Chip_Mobile_2001.iso / palm / system / _palmemu / palmemu.exe / Scripting / Perl / EmFunctions.pm next >
Text File  |  2000-01-27  |  25KB  |  858 lines

  1. ########################################################################
  2. #
  3. #    File:            EmFunctions.pm
  4. #
  5. #    Purpose:        Perl wrappers for Palm OS functions
  6. #
  7. #    Description:    This file contains Perl equivalents of Palm OS
  8. #                    functions like DmNumDatabases, FrmGetActiveForm,
  9. #                    etc.  Currently, the functions here are generated
  10. #                    by hand, and so only a small subset of Palm OS
  11. #                    functions are wrapped.  In the future, this file
  12. #                    (or files) may be automatically generated by
  13. #                    a script that converts the SDK headers.
  14. #
  15. #                    In general, functions follow the calling
  16. #                    conventions in the SDK headers.  However, there
  17. #                    are exceptions.  See the comments before each
  18. #                    subroutine for details.
  19. #
  20. ########################################################################
  21.  
  22. package EmFunctions;
  23.  
  24. use Exporter ();
  25. @ISA = qw(Exporter);
  26.  
  27. @EXPORT = qw(
  28.     CtlGetLabel
  29.  
  30.     DmNumDatabases DmFindDatabase DmDatabaseInfo
  31.  
  32.     EvtEnqueuePenPoint EvtEnqueueKey
  33.  
  34.     FrmGetActiveForm FrmGetLabel FrmGetNumberOfObjects FrmGetObjectBounds
  35.     FrmGetObjectId FrmGetObjectPtr FrmGetObjectType FrmGetTitle
  36.  
  37.     HostGetHostVersion
  38.     HostGremlinNew
  39.     HostSessionCreate HostSessionOpen HostSessionClose HostSessionQuit
  40.     HostSignalWait HostSignalResume
  41.  
  42.     MemChunkFree MemPtrFree MemPtrNew MemPtrSetOwner
  43.  
  44.     SysUIAppSwitch
  45.  
  46.     WinDisplayToWindowPt WinWindowToDisplayPt
  47.  
  48.     frmFieldObj frmControlObj frmListObj frmTableObj frmBitmapObj frmLineObj
  49.     frmFrameObj frmRectangleObj frmLabelObj frmTitleObj frmPopupObj
  50.     frmGraffitiStateObj frmGadgetObj frmScrollBarObj
  51. );
  52.  
  53. use EmRPC;
  54. use EmSysTraps;
  55.  
  56. $slkSocket = EmRPC::slkSocketPoserRPC;
  57. #$slkSocket = EmRPC::slkSocketDebugger;
  58. $slkPktType = EmRPC::slkPktTypeSystem;
  59.  
  60. use constant frmFieldObj            => 0;
  61. use constant frmControlObj            => 1;
  62. use constant frmListObj                => 2;
  63. use constant frmTableObj            => 3;
  64. use constant frmBitmapObj            => 4;
  65. use constant frmLineObj                => 5;
  66. use constant frmFrameObj            => 6;
  67. use constant frmRectangleObj        => 7;
  68. use constant frmLabelObj            => 8;
  69. use constant frmTitleObj            => 9;
  70. use constant frmPopupObj            => 10;
  71. use constant frmGraffitiStateObj    => 11;
  72. use constant frmGadgetObj            => 12;
  73. use constant frmScrollBarObj        => 13;
  74.  
  75. use constant hostSelectorGetHostVersion            => 0x0100;
  76. use constant hostSelectorGetHostID                => 0x0101;
  77. use constant hostSelectorGetHostPlatform        => 0x0102;
  78. use constant hostSelectorIsSelectorImplemented    => 0x0103;
  79. use constant hostSelectorGestalt                => 0x0104;
  80. use constant hostSelectorIsCallingTrap            => 0x0105;
  81.  
  82. use constant hostSelectorGremlinIsRunning        => 0x0400;
  83. use constant hostSelectorGremlinNumber            => 0x0401;
  84. use constant hostSelectorGremlinCounter            => 0x0402;
  85. use constant hostSelectorGremlinLimit            => 0x0403;
  86. use constant hostSelectorGremlinNew                => 0x0404;
  87.  
  88. use constant hostSelectorGetPreference            => 0x0600;
  89. use constant hostSelectorSetPreference            => 0x0601;
  90.  
  91. use constant hostSelectorLogFile                => 0x0700;
  92. use constant hostSelectorSetLogFileSize            => 0x0701;
  93.  
  94. use constant hostSelectorSessionCreate            => 0x0800;
  95. use constant hostSelectorSessionOpen            => 0x0801;
  96. use constant hostSelectorSessionClose            => 0x0802;
  97. use constant hostSelectorSessionQuit            => 0x0803;
  98. use constant hostSelectorSignalSend                => 0x0804;
  99. use constant hostSelectorSignalWait                => 0x0805;
  100. use constant hostSelectorSignalResume            => 0x0806;
  101.  
  102.  
  103. ########################################################################
  104. #
  105. #    FUNCTION:        CtlGetLabel
  106. #
  107. #    DESCRIPTION:    Return a string pointer to the control's text label.
  108. #
  109. #    PARAMETERS:        Memory address on the remote device of the control
  110. #                    object.  Usually the result of something like
  111. #                    FrmGetObjectPtr on a control object.
  112. #
  113. #    RETURNED:        A list containing the memory address on the remote
  114. #                    device of the label, and the label string itself.
  115. #
  116. ########################################################################
  117.  
  118. sub CtlGetLabel
  119. {
  120.     # const Char* CtlGetLabel (const ControlType * ctlP)
  121.  
  122.     my ($return, $format) = ("string", "rptr");
  123.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapCtlGetLabel, $format, @_);
  124.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  125. }
  126.  
  127.  
  128. ########################################################################
  129. #
  130. #    FUNCTION:        DmNumDatabases
  131. #
  132. #    DESCRIPTION:    Returns the number of databases on a card
  133. #
  134. #    PARAMETERS:        card number
  135. #
  136. #    RETURNS:        Number of databases found
  137. #
  138. ########################################################################
  139.  
  140. sub DmNumDatabases
  141. {
  142.     # UInt DmNumDatabases (UInt cardNo)
  143.  
  144.     my ($return, $format) = ("int16", "int16");
  145.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapDmNumDatabases, $format, @_);
  146.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  147. }
  148.  
  149.  
  150. ########################################################################
  151. #
  152. #    FUNCTION:        DmDatabaseInfo
  153. #
  154. #    DESCRIPTION:    Retrieves database information
  155. #
  156. #    PARAMETERS:        Card number, database LocalID
  157. #
  158. #    RETURNS:        Result code from function, as well as the components
  159. #                    of a hash.  To get the result, assign the result
  160. #                    of this function to ($err, %results).  You can
  161. #                    then extract individual values from %results using
  162. #                    hash operators and the following keys: name
  163. #                    attributes, version, crDate, modDate, bckUpDate,
  164. #                    modNum, appInfoID, sortInfoID, type, and creator.
  165. #                    Example: $name = $results{name}.
  166. #
  167. ########################################################################
  168.  
  169. sub DmDatabaseInfo
  170. {
  171.     # Err DmDatabaseInfo (UInt cardNo, LocalID    dbID, const CharPtr nameP,
  172.     #                UIntPtr attributesP, UIntPtr versionP, ULongPtr crDateP,
  173.     #                ULongPtr modDateP, ULongPtr bckUpDateP,
  174.     #                ULongPtr modNumP, LocalID* appInfoIDP,
  175.     #                LocalID* sortInfoIDP, ULongPtr typeP,
  176.     #                ULongPtr creatorP)
  177.  
  178.     my ($cardNo, $dbID) = @_;
  179.  
  180.     my ($format) = "int16 LocalID string32 int16* int16* int32* int32* " .
  181.                     "int32* int32* LocalID* LocalID* int32* int32*";
  182.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapDmDatabaseInfo, $format,
  183.                         $cardNo, $dbID, "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  184.  
  185.     ($D0,    name        => $params[2],
  186.             attributes    => $params[3],
  187.             version        => $params[4],
  188.             crDate        => $params[5],
  189.             modDate        => $params[6],
  190.             bckUpDate    => $params[7],
  191.             modNum        => $params[8],
  192.             appInfoID    => $params[9],
  193.             sortInfoID    => $params[10],
  194.             type        => $params[11],
  195.             creator        => $params[12]);
  196. }
  197.  
  198.  
  199. ########################################################################
  200. #
  201. #    FUNCTION:        DmFindDatabase
  202. #
  203. #    DESCRIPTION:    Searches for a database by name
  204. #
  205. #    PARAMETERS:        card number, database name
  206. #
  207. #    RETURNS:        LocalID of database header
  208. #
  209. ########################################################################
  210.  
  211. sub DmFindDatabase
  212. {
  213.     # LocalID DmFindDatabase (UInt cardNo, const CharPtr nameP)
  214.  
  215.     my ($return, $format) = ("LocalID", "int16 string");
  216.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapDmFindDatabase, $format, @_);
  217.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  218. }
  219.  
  220.  
  221. ########################################################################
  222. #
  223. #    FUNCTION:        EvtEnqueuePenPoint
  224. #
  225. #    DESCRIPTION:    Called by the digitizer interrupt routine to enqueue
  226. #                    a pen coordinate into the pen queue.
  227. #
  228. #    PARAMETERS:        x and y coordinates, subtracted from 256.
  229. #                    Example: EvtEnqueuePoint (256 - 100, 256 - 80)
  230. #                    Pass in (-1, -1) to enqueue a Pen Up.
  231. #
  232. #    RETURNS:        size of queue in bytes
  233. #
  234. ########################################################################
  235.  
  236. sub EvtEnqueuePenPoint
  237. {
  238.     # Err EvtEnqueuePenPoint (PointType* ptP)
  239.  
  240.     my ($return, $format) = ("Err", "point");
  241.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapEvtEnqueuePenPoint, $format, @_);
  242.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  243. }
  244.  
  245. ########################################################################
  246. #
  247. #    FUNCTION:        EvtEnqueueKey
  248. #
  249. #    DESCRIPTION:    Called by the digitizer interrupt routine to enqueue
  250. #                    a key into the key queue.
  251. #
  252. #    PARAMETERS:        WChar ascii, UInt16 keycode, UInt16 modifiers
  253. #
  254. #    RETURNS:        size of queue in bytes
  255. #
  256. ########################################################################
  257.  
  258. sub EvtEnqueueKey
  259. {
  260.     # Err EvtEnqueueKey (WChar ascii, UInt16 keycode, UInt16 modifiers)
  261.  
  262.     my ($return, $format) = ("Err", "int16 int16 int16");
  263.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapEvtEnqueueKey, $format, @_);
  264.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  265. }
  266.  
  267.  
  268. ########################################################################
  269. #
  270. #    FUNCTION:        FrmGetActiveForm
  271. #
  272. #    DESCRIPTION:    This routine returns the currently active form.
  273. #
  274. #    PARAMETERS:        nothing
  275. #
  276. #    RETURNED:        Memory address on the remote device of the form.
  277. #
  278. ########################################################################
  279.  
  280. sub FrmGetActiveForm
  281. {
  282.     # FormPtr FrmGetActiveForm (void)
  283.  
  284.     my ($return, $format) = ("rptr", "");
  285.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapFrmGetActiveForm, $format, @_);
  286.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  287. }
  288.  
  289.  
  290. ########################################################################
  291. #
  292. #    FUNCTION:        FrmGetLabel
  293. #
  294. #    DESCRIPTION:    This routine return the text of the specified label object
  295. #                    in the specified form.
  296. #
  297. #    PARAMETERS:        formP        - memory block that contains the form.
  298. #                    labelID        - id of the label object.
  299. #
  300. #    RETURNED:        A list containing the memory address on the remote
  301. #                    device of the label, and the label string itself.
  302. #
  303. ########################################################################
  304.  
  305. sub FrmGetLabel
  306. {
  307.     # CharPtr FrmGetLabel (const FormPtr frm, const Word lableID)
  308.  
  309.     my ($return, $format) = ("string", "rptr int16");
  310.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapFrmGetLabel, $format, @_);
  311.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  312. }
  313.  
  314.  
  315. ########################################################################
  316. #
  317. #    FUNCTION:        FrmGetNumberOfObjects
  318. #
  319. #    DESCRIPTION:    This routine returns the number of objects in a form.
  320. #
  321. #    PARAMETERS:        formP        memory block that contains the form.
  322. #
  323. #    RETURNED:        number of object in the form specified
  324. #
  325. ########################################################################
  326.  
  327. sub FrmGetNumberOfObjects
  328. {
  329.     # Word FrmGetNumberOfObjects (const FormPtr frm)
  330.  
  331.     my ($return, $format) = ("int16", "rptr");
  332.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapFrmGetNumberOfObjects, $format, @_);
  333.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  334. }
  335.  
  336.  
  337. ########################################################################
  338. #
  339. #    FUNCTION:        FrmGetObjectBounds
  340. #
  341. #    DESCRIPTION:    This routine returns the bounds of the specified form object
  342. #
  343. #    PARAMETERS:        formP        memory block that contains the form.
  344. #                    objIndex    index of the object
  345. #
  346. #    RETURNS:        The components of a hash.  To get the result, assign
  347. #                    the result of this function to %results.  You can
  348. #                    then extract individual values from %results using
  349. #                    hash operators and the following keys: top, left
  350. #                    bottom, right, width, height.
  351. #                    Example: $top = $results{top}.
  352. #
  353. ########################################################################
  354.  
  355. sub FrmGetObjectBounds
  356. {
  357.     # void FrmGetObjectBounds (const FormPtr frm, const Word pObjIndex, const RectanglePtr r)
  358.  
  359.     my ($form, $obj_index) = @_;
  360.  
  361.     my ($return, $format) = ("", "rptr int16 rect");
  362.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapFrmGetObjectBounds, $format,
  363.                                             $form, $obj_index, {});
  364.  
  365.     my ($foo) = $params[2];
  366.     %$foo;
  367. }
  368.  
  369.  
  370. ########################################################################
  371. #
  372. #    FUNCTION:        FrmGetObjectId
  373. #
  374. #    DESCRIPTION:    This routine returns the id of the object specified.  
  375. #                    An id is a value specified by the application developer 
  376. #                    that uniquely identifies an object.
  377. #
  378. #    PARAMETERS:        formP        memory block that contains the form.
  379. #                    objIndex    item number of the object
  380. #
  381. #    RETURNED:        Object ID.
  382. #
  383. ########################################################################
  384.  
  385. sub FrmGetObjectId
  386. {
  387.     # UInt16 FrmGetObjectId (const FormType * formP, UInt16 objIndex)
  388.  
  389.     my ($return, $format) = ("int16", "rptr int16");
  390.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapFrmGetObjectId, $format, @_);
  391.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  392. }
  393.  
  394.  
  395. ########################################################################
  396. #
  397. #    FUNCTION:        FrmGetObjectPtr
  398. #
  399. #    DESCRIPTION:    This routine returns a pointer to the data structure of an 
  400. #                    object in a form.
  401. #
  402. #    PARAMETERS:        formP        memory block that contains the form.
  403. #                    objIndex    item number of the object
  404. #
  405. #    RETURNED:        Memory address on the remote device of the object.
  406. #                    The contents of the object depend on the object type.
  407. #
  408. ########################################################################
  409.  
  410. sub FrmGetObjectPtr
  411. {
  412.     # VoidPtr FrmGetObjectPtr (const FormPtr frm, const Word objIndex)
  413.  
  414.     my ($return, $format) = ("rptr", "rptr int16");
  415.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapFrmGetObjectPtr, $format, @_);
  416.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  417. }
  418.  
  419.  
  420. ########################################################################
  421. #
  422. #    FUNCTION:        FrmGetObjectType
  423. #
  424. #    DESCRIPTION:    This routine returns the type of an object.
  425. #
  426. #    PARAMETERS:        formP        memory block that contains the form.
  427. #                    objIndex    item number of the object
  428. #
  429. #    RETURNED:        FormObjectType of the item specified
  430. #
  431. ########################################################################
  432.  
  433. sub FrmGetObjectType
  434. {
  435.     # FormObjectKind FrmGetObjectType (const FormPtr frm, const Word objIndex)
  436.  
  437.     my ($return, $format) = ("int16", "rptr int16");
  438.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapFrmGetObjectType, $format, @_);
  439.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  440. }
  441.  
  442. ########################################################################
  443. #
  444. #    FUNCTION:        FrmGetTitle
  445. #
  446. #    DESCRIPTION:    This routine returns a pointer to the title string of a 
  447. #                    form.
  448. #
  449. #    PARAMETERS:        formP      - memory block that contains the form.
  450. #
  451. #    RETURNED:        A list containing the memory address on the remote
  452. #                    device of the title, and the title string itself.
  453. #
  454. ########################################################################
  455.  
  456. sub FrmGetTitle
  457. {
  458.     # const Char * FrmGetTitle (const FormType * formP)
  459.  
  460.     my ($return, $format) = ("string", "rptr");
  461.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapFrmGetTitle, $format, @_);
  462.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  463. }
  464.  
  465.  
  466. ########################################################################
  467. #
  468. #    FUNCTION:        HostGetHostVersion
  469. #
  470. #    DESCRIPTION:    Get the version of the host (Palm OS Emulator).
  471. #
  472. #    PARAMETERS:        None
  473. #
  474. #    RETURNS:        Version number of Poser in Palm OS version format.
  475. #
  476. ########################################################################
  477.  
  478. sub HostGetHostVersion
  479. {
  480.     # long HostGetHostVersion(void)
  481.  
  482.     my ($return, $format) = ("int32", "int16");
  483.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  484.                         hostSelectorGetHostVersion, @_);
  485.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  486. }
  487.  
  488.  
  489. ########################################################################
  490. #
  491. #    FUNCTION:        HostGremlinNew
  492. #
  493. #    DESCRIPTION:    Start a new Gremlin Horde.
  494. #
  495. #    PARAMETERS:        Starting Gremlin number.
  496. #                    Ending Gremlin number.
  497. #                    Frequency (in terms of Gremlin events) at which
  498. #                        states are automatically saved.
  499. #                    Switching depth (number of events generated before
  500. #                        switching to a different Gremlin).
  501. #                    Max depth (maximum number of events generated
  502. #                        for each Gremlin).
  503. #                    List of application names on which to run Gremlins.
  504. #
  505. #    RETURNS:        Error code.
  506. #
  507. ########################################################################
  508.  
  509. sub HostGremlinNew
  510. {
  511.     # HostErr HostGremlinNew(const HostGremlinInfo*)
  512.  
  513.     ($start, $stop, $save_freq, $switch_depth, $max_depth, @apps) = @_;
  514.  
  515.     my ($app_string) = join (",", @apps);
  516.  
  517.     my ($struct) = pack("NNNNN", $start, $stop, $save_freq, $switch_depth, $max_depth) . $app_string;
  518.  
  519.     my ($return, $format) = ("HostErr", "int16 block");
  520.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  521.                         hostSelectorGremlinNew, $struct);
  522.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  523. }
  524.  
  525.  
  526. ########################################################################
  527. #
  528. #    FUNCTION:        HostSetLogFileSize
  529. #
  530. #    DESCRIPTION:    Create a new session.
  531. #
  532. #    PARAMETERS:        Name of device to emulate.  Choices are: "Pilot",
  533. #                        "PalmPilot", "Palm III", "Palm IIIx",
  534. #                        "Palm V", "Palm VII".
  535. #                    RAM size (in K) to emulate.
  536. #                    Path to ROM to use.
  537. #
  538. #    RETURNS:        Error code.
  539. #
  540. ########################################################################
  541.  
  542. sub HostSetLogFileSize
  543. {
  544.     # void HostSetLogFileSize(long)
  545.  
  546.     my ($return, $format) = ("HostErr", "int32");
  547.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  548.                         hostSelectorSetLogFileSize, @_);
  549.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  550. }
  551.  
  552.  
  553. ########################################################################
  554. #
  555. #    FUNCTION:        HostSessionCreate
  556. #
  557. #    DESCRIPTION:    Create a new session.
  558. #
  559. #    PARAMETERS:        Name of device to emulate.  Choices are: "Pilot",
  560. #                        "PalmPilot", "Palm III", "Palm IIIx",
  561. #                        "Palm V", "Palm VII".
  562. #                    RAM size (in K) to emulate.
  563. #                    Path to ROM to use.
  564. #
  565. #    RETURNS:        Error code.
  566. #
  567. ########################################################################
  568.  
  569. sub HostSessionCreate
  570. {
  571.     # HostErr HostSessionCreate(const char* device, long ramSize, const char* romPath)
  572.  
  573.     my ($return, $format) = ("HostErr", "int16 string int32 string");
  574.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  575.                         hostSelectorSessionCreate, @_);
  576.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  577. }
  578.  
  579.  
  580. ########################################################################
  581. #
  582. #    FUNCTION:        HostSessionOpen
  583. #
  584. #    DESCRIPTION:    Open a previously create session file.
  585. #
  586. #    PARAMETERS:        Path to session file to open.
  587. #
  588. #    RETURNS:        Error code.
  589. #
  590. ########################################################################
  591.  
  592. sub HostSessionOpen
  593. {
  594.     # HostErr HostSessionOpen(const char* psfFileName)
  595.  
  596.     my ($return, $format) = ("HostErr", "int16 string");
  597.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  598.                         hostSelectorSessionOpen, @_);
  599.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  600. }
  601.  
  602.  
  603. ########################################################################
  604. #
  605. #    FUNCTION:        HostSessionClose
  606. #
  607. #    DESCRIPTION:    Close the current session, optionally saving it.
  608. #
  609. #    PARAMETERS:        Name of session file to create. Can be null.
  610. #
  611. #    RETURNS:        Error code.
  612. #
  613. ########################################################################
  614.  
  615. sub HostSessionClose
  616. {
  617.     # HostErr HostSessionClose(const char* saveFileName)
  618.  
  619.     my ($return, $format) = ("HostErr", "int16 string");
  620.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  621.                         hostSelectorSessionClose, @_);
  622.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  623. }
  624.  
  625.  
  626. ########################################################################
  627. #
  628. #    FUNCTION:        HostSessionQuit
  629. #
  630. #    DESCRIPTION:    Ask Palm OS Emulator to quit.
  631. #
  632. #    PARAMETERS:        None
  633. #
  634. #    RETURNS:        Error code.
  635. #
  636. ########################################################################
  637.  
  638. sub HostSessionQuit
  639. {
  640.     # HostErr HostSessionQuit(void)
  641.  
  642.     my ($return, $format) = ("HostErr", "int16");
  643.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  644.                         hostSelectorSessionQuit, @_);
  645.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  646. }
  647.  
  648.  
  649. ########################################################################
  650. #
  651. #    FUNCTION:        HostSignalWait
  652. #
  653. #    DESCRIPTION:    Wait for a signal from the Palm OS Emulator.
  654. #
  655. #    PARAMETERS:        timeout (in milliseconds)
  656. #
  657. #    RETURNS:        List containing the error code and the numeric
  658. #                    signal value returned from the Emulator.
  659. #
  660. ########################################################################
  661.  
  662. sub HostSignalWait
  663. {
  664.     # HostErr HostSignalWait(long timeout, HostSignal* signalNumber)
  665.  
  666.     my ($return, $format) = ("HostErr", "int16 int32 int32*");
  667.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  668.                         hostSelectorSignalWait, $_[0], 0);
  669.  
  670.     ($D0, $params[2]);    # 0 = selector, 1 = timeout, 2 = signal number
  671. }
  672.  
  673.  
  674. ########################################################################
  675. #
  676. #    FUNCTION:        HostSignalResume
  677. #
  678. #    DESCRIPTION:    Tell the Emulator to resume after it has sent us
  679. #                    a signal.
  680. #
  681. #    PARAMETERS:        None
  682. #
  683. #    RETURNS:        Error code.
  684. #
  685. ########################################################################
  686.  
  687. sub HostSignalResume
  688. {
  689.     # HostErr HostSignalResume(void)
  690.  
  691.     my ($return, $format) = ("HostErr", "int16");
  692.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapHostControl, $format,
  693.                         hostSelectorSignalResume, @_);
  694.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  695. }
  696.  
  697.  
  698. ########################################################################
  699. #
  700. #    FUNCTION:        MemChunkFree
  701. #
  702. #    DESCRIPTION:    Disposes of a chunk
  703. #
  704. #    PARAMETERS:        Pointer to chunk
  705. #
  706. #    RETURNS:        0 if no error
  707. #
  708. ########################################################################
  709.  
  710. sub MemChunkFree
  711. {
  712.     my ($return, $format) = ("Err", "rptr");
  713.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapMemChunkFree, $format, @_);
  714.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  715. }
  716.  
  717.  
  718. ########################################################################
  719. #
  720. #    FUNCTION:        MemPtrFree
  721. #
  722. #    DESCRIPTION:    Disposes of a chunk
  723. #
  724. #    PARAMETERS:        Pointer to chunk
  725. #
  726. #    RETURNS:        0 if no error
  727. #
  728. ########################################################################
  729.  
  730. sub MemPtrFree
  731. {
  732.     MemChunkFree (@_);
  733. }
  734.  
  735.  
  736. ########################################################################
  737. #
  738. #    FUNCTION:        MemPtrNew
  739. #
  740. #    DESCRIPTION:    Allocates a non-movable chunk in the dynamic heap
  741. #
  742. #    PARAMETERS:        requested size of chunk
  743. #
  744. #    RETURNS:        Ptr to chunk, or 0 if error
  745. #
  746. ########################################################################
  747.  
  748. sub MemPtrNew
  749. {
  750.     my ($return, $format) = ("rptr", "int32");
  751.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapMemPtrNew, $format, @_);
  752.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  753. }
  754.  
  755.  
  756. ########################################################################
  757. #
  758. #    FUNCTION:        MemPtrSetOwner
  759. #
  760. #    DESCRIPTION:    Sets the owner ID of a chunk
  761. #
  762. #    PARAMETERS:        chunk data pointer
  763. #
  764. #    RETURNS:        0 if no error
  765. #
  766. ########################################################################
  767.  
  768. sub MemPtrSetOwner
  769. {
  770.     #    Err  MemPtrSetOwner (void* p, UInt16 owner)
  771.  
  772.     my ($return, $format) = ("Err", "rptr int16");
  773.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapMemPtrSetOwner, $format, @_);
  774.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  775. }
  776.  
  777.  
  778. ########################################################################
  779. #
  780. #    FUNCTION:        SysUIAppSwitch
  781. #
  782. #    DESCRIPTION:    Tries to make the current UI application quit and
  783. #                    then launches the given UI application by card
  784. #                    number and database ID.
  785. #
  786. #    PARAMETERS:        cardNo, dbID, launchCmd, cmdPBP
  787. #
  788. #                    Note that in order to utilize the cmdPBP, you need
  789. #                    to first create a buffer on the remote side with
  790. #                    MemPtrNew and fill in its contents with
  791. #                    EmRPC::WriteBlock.  If you want to pass NULL for
  792. #                    cmdPBP, specify zero for the last parameter.
  793. #
  794. #    RETURNS:        errNone if no err
  795. #
  796. ########################################################################
  797.  
  798. sub SysUIAppSwitch
  799. {
  800.     # Err SysUIAppSwitch(UInt16 cardNo, LocalID dbID, UInt16 cmd, MemPtr cmdPBP)
  801.  
  802.     my ($return, $format) = ("Err", "int16 LocalID int16 rptr");
  803.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapSysUIAppSwitch, $format, @_);
  804.     EmRPC::ReturnValue ($return, $D0, $A0, @params);
  805. }
  806.  
  807.  
  808. ########################################################################
  809. #
  810. #    FUNCTION:        WinDisplayToWindowPt
  811. #
  812. #    DESCRIPTION:    This routine converts a display-relative coordinate to
  813. #                    a window-relative coordinate.  The coordinate returned is 
  814. #                    relative to the draw window.
  815. #
  816. #    PARAMETERS:        xP    <->    x coordinate to convert
  817. #                    yP    <->    y coordinate to convert
  818. #
  819. #    RETURNED:        nothing
  820. #
  821. ########################################################################
  822.  
  823. sub WinDisplayToWindowPt
  824. {
  825.     # void WinDisplayToWindowPt (Coord * xP, Coord * yP)
  826.  
  827.     my ($return, $format) = ("void", "Coord* Coord*");
  828.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapWinDisplayToWindowPt, $format, @_);
  829.     ($params[0], $params[1]);
  830. }
  831.  
  832.  
  833. ########################################################################
  834. #
  835. #    FUNCTION:        WinWindowToDisplayPt
  836. #
  837. #    DESCRIPTION:    This routine converts a window-relative coordinate to
  838. #                    a display-relative coordinate.  The coordinate passed is 
  839. #                    assumed to be relative to the draw window.
  840. #
  841. #    PARAMETERS:        xP    <->    x coordinate to convert
  842. #                    yP    <->    y coordinate to convert
  843. #
  844. #    RETURNED:        nothing
  845. #
  846. ########################################################################
  847.  
  848. sub WinWindowToDisplayPt
  849. {
  850.     # void WinWindowToDisplayPt (Coord * xP, Coord * yP)
  851.  
  852.     my ($return, $format) = ("void", "Coord* Coord*");
  853.     my ($D0, $A0, @params) = EmRPC::DoRPC (sysTrapWinWindowToDisplayPt, $format, @_);
  854.     ($params[0], $params[1]);
  855. }
  856.  
  857. 1;
  858.