Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE 466 – Spring 2000 – PalmOS - 1 Palm OS zInterface management ybasic user interface model yevent dispatch loop paradigm zSystem management yalarm and.

Similar presentations


Presentation on theme: "CSE 466 – Spring 2000 – PalmOS - 1 Palm OS zInterface management ybasic user interface model yevent dispatch loop paradigm zSystem management yalarm and."— Presentation transcript:

1 CSE 466 – Spring 2000 – PalmOS - 1 Palm OS zInterface management ybasic user interface model yevent dispatch loop paradigm zSystem management yalarm and time (timers and real-time clocks) ysound, pen, key, serial port (I/O devices) ystring (libraries of routines) ysystem (errors, power, application start/stop) yevent (interrupt->event translation, dispatch loop) zMemory management ystructures for data in memory (heaps, records, databases) zCommunication yserial port (layered with TCP/IP protocol)

2 CSE 466 – Spring 2000 – PalmOS - 2 Palm OS Application Model zOne application is “running” yrunning application has control of the screen and user input yothers may be active in the background and receive other I/O events ywhen application starts, “PilotMain” is called zMain yruns “AppStart” to set up user interface of program yruns “AppStop” before it stops execution yall data in RAM ypermanent storage in memory heaps organized in “databases” y“AppEventLoop” is run between start and stop

3 CSE 466 – Spring 2000 – PalmOS - 3 PilotMain static DWord StarterPilotMain(Word cmd, Ptr cmdPBP, Word launchFlags) { Err error; error = RomVersionCompatible(ourMinVersion, launchFlags); if (error) return error; switch (cmd) { case sysAppLaunchCmdNormalLaunch: error = AppStart(); if (error) return error; FrmGotoForm(MainForm); AppEventLoop(); AppStop(); break; default: break; } return 0; }

4 CSE 466 – Spring 2000 – PalmOS - 4 Events zGenerated by system (timers, I/O, user input, etc.) zApplications polls (in a loop) for new events zMany different types of events (29 in all) yapplication events (e.g., stop) yuser interface events xmenu xselection xpen xkey zInterpret events yspecific to application ydefault behavior provided by system

5 CSE 466 – Spring 2000 – PalmOS - 5 Event dispatch loop zGet event zHandle event ysystem event handler ymenu event handler yapplication event handler yuser interface element event handler zLeverage default behaviors ymost user code goes into the application event handler

6 CSE 466 – Spring 2000 – PalmOS - 6 Event Loop Example

7 CSE 466 – Spring 2000 – PalmOS - 7 Event Loop Example (cont.)

8 CSE 466 – Spring 2000 – PalmOS - 8 AppEventLoop static void AppEventLoop(void) { Word error; EventType event; do { EvtGetEvent(&event, evtWaitForever); if (! SysHandleEvent(&event)) if (! MenuHandleEvent(0, &event, &error)) if (! AppHandleEvent(&event)) FrmDispatchEvent(&event); /* ** do other stuff here */ } while (event.eType != appStopEvent); }

9 CSE 466 – Spring 2000 – PalmOS - 9 AppHandleEvent static Boolean AppHandleEvent( EventPtr eventP) { Word formId; FormPtr frmP; if (eventP->eType == frmLoadEvent) { formId = eventP->data.frmLoad.formID; frmP = FrmInitForm(formId); FrmSetActiveForm(frmP); switch (formId) { case MainForm: FrmSetEventHandler(frmP, MainFormHandleEvent); break; default: break; } return true; } return false; }

10 CSE 466 – Spring 2000 – PalmOS - 10 MainFormHandleEvent static Boolean MainFormHandleEvent(EventPtr eventP) { Boolean handled = false; FormPtr frmP; switch (eventP->eType) { case menuEvent: return MainFormDoCommand(eventP->data.menu.itemID); break; case frmOpenEvent: frmP = FrmGetActiveForm(); MainFormInit(frmP); FrmDrawForm(frmP); handled = true; break; default: break; } return handled; }

11 CSE 466 – Spring 2000 – PalmOS - 11 Handling Background Tasks zCan’t access processor interrupts directly zChange timeout in EvtGetEvent to wait a given amount of time (don’t wait forever) zWhen timeout occurs, nilEvent is posted to event queue zCan handle background task in nilEvent zOr can handle background task in event loop

12 CSE 466 – Spring 2000 – PalmOS - 12 Storage system zOS and standard apps in flash ROM (2-8 M) zUser data and programs stored in RAM (2-8 M) ydynamic (stacks, heaps, global vars of application) xwhen application stops, data may be lost ystorage (databases) xanalagous to a file and provides static storage across invocation of the application zDatabases ychunks of data yeach entry is associated with a type (linked to an application) yDatabases are collections of records (chunks of < 64k)

13 CSE 466 – Spring 2000 – PalmOS - 13 Conduits zMechanism for transferring databases across serial ports of device (RS232 or IrDA) to PC zHot-Sync ysynchronizes RAM databases with PC copies ychanges on PC propagate to RAM and vice-versa zAlso used to transfer new applications to RAM zCan be extended to bring arbitrary data into the Pilot ye.g., collect e-mail for later reading zPilot was envisioned as extension of desktop yuser input at both ends (PC or Pilot) ysame data (synchronized periodically)

14 CSE 466 – Spring 2000 – PalmOS - 14 Development environment zElements yuser interface constructor ysource code editor ycompiler ydebugger zSDKs: system development kits yMetrowerks CodeWarrior for Palm Pilot yGNU for Palm Pilot zConduit development kits for PC

15 CSE 466 – Spring 2000 – PalmOS - 15 User Interfaces in PalmOS

16 CSE 466 – Spring 2000 – PalmOS - 16 Form Layout

17 CSE 466 – Spring 2000 – PalmOS - 17 UI Resources

18 CSE 466 – Spring 2000 – PalmOS - 18 Resources header file // Resource: tFRM 1000 #define MainForm 1000 //(Left Origin = 0, Top Origin = 0, Width = 160, Height = 160, Usable = 1, Modal = 0, Save Behind = 0, Help ID = 0, Menu Bar ID = 1000, Default Button ID = 0) #define MainUpdateButtonButton 1005 //(Left Origin = 107, Top Origin = 138, Width = 51, Height = 18, Usable = 1, Anchor Left = 1, Frame = 1, Non-bold Frame = 1, Font = Standard) #define MainUnnamed1001BitMap 1000 //(Left Origin = 72, Top Origin = 67, Bitmap Resource ID = 1000, Usable = 1) #define MainUnnamed1002BitMap 1200 //(Left Origin = 86, Top Origin = 82, Bitmap Resource ID = 1200, Usable = 1) #define MainUnnamed1003BitMap 1100 //(Left Origin = 72, Top Origin = 95, Bitmap Resource ID = 1100, Usable = 1) #define MainUnnamed1004BitMap 1300 //(Left Origin = 57, Top Origin = 82, Bitmap Resource ID = 1300, Usable = 1) #define MainUnnamed1006Label 1006 //(Left Origin = 72, Top Origin = 15, Usable = 1, Font = Bold) #define MainUnnamed1007Label 1007 //(Left Origin = 75, Top Origin = 144, Usable = 1, Font = Bold) #define MainUnnamed1008Label 1008 //(Left Origin = 145, Top Origin = 80, Usable = 1, Font = Bold) #define MainUnnamed1009Label 1009 //(Left Origin = 0, Top Origin = 80, Usable = 1, Font = Bold) // Resource: tFRM 1100 #define InfoForm 1100 //(Left Origin = 2, Top Origin = 46, Width = 156, Height = 96, Usable = 1, Modal = 1, Save Behind = 1, Help ID = 1100, Menu Bar ID = 0, Default Button ID = 0) #define InfoUnnamed1101Button 1101 //(Left Origin = 60, Top Origin = 75, Width = 36, Height = 12, Usable = 1, Anchor Left = 1, Frame = 1, Non-bold Frame = 1, Font = Standard) #define InfoUnnamed1102Label 1102 //(Left Origin = 45, Top Origin = 29, Usable = 1, Font = Bold) // Resource: MENU 1000 #define MainOptionsMenu 1000 #define MainOptionsConnect 1000 #define MainOptionsDisconnect 1001 #define MainOptionsUpdate 1002 #define MainOptionsAboutCSE477Lab3 1004


Download ppt "CSE 466 – Spring 2000 – PalmOS - 1 Palm OS zInterface management ybasic user interface model yevent dispatch loop paradigm zSystem management yalarm and."

Similar presentations


Ads by Google