// ************************************************************* // The Robotics Institute // Carnegie Mellon University // Copyright (C) 2000 by RI. // All Rights Reserved. // // File: sample.cpp // Project: PalmPilot Robot source code (Advanced project) // Author: Greg Reshko // Last modified: 4/03/2000 // Program: // Simple demo/test program. // ************************************************************* #include "TestForm_res.h" // include form resource #define PILOT_PRECOMPILED_HEADERS_OFF #include #include #include #include #include #include "MathLib.h" // Pilot IEEE-754 double math functions // Note: Library requires installed MathLib.prc #include "vecmath.h" // vector math operations #include "sv203.h" // SV203 board class #include "robot.h" // Robot class Robot myrobot; // create "myrobot" PalmPilot Robot Boolean Form1Handle(EventPtr event); // prototype for event handler // Simple demo/test function void SimpleFunction(void) { int a, ir1; vector A(0.10,0.00), B(0.00, 0.10); // create 2 vectors myrobot.Vector_Drive(A, 0); // drive in direction of A vector (X direction) myrobot.Wait(100, NULL); // wait for 100ms myrobot.Stop(); // stop myrobot.Message("Hello!"); // say hello! myrobot.Wait(10000, &a); // wait until screen was touched myrobot.Vector_Drive(B, 0); // drive in direction of B vector (Y direction) myrobot.Wait(100, NULL); // wait for 100ms myrobot.Stop(); // stop ir1 = myrobot.IRDist(1); // get distance from first IR sensor myrobot.Message(ir1); // display that distance } // Main event loop // The loop uses Form1Handle to handle all events void EventLoop() { EventType e; unsigned short err, formID; FormType* form; do { EvtGetEvent(&e,-1); if (SysHandleEvent(&e)) continue; if (MenuHandleEvent(0, &e, &err)) continue; if (e.eType == frmLoadEvent) { formID = e.data.frmLoad.formID; form=FrmInitForm(formID); FrmSetActiveForm(form); switch (formID) { case Form1Form: FrmSetEventHandler(form, (FormEventHandlerPtr) Form1Handle); break; } } FrmDispatchEvent(&e); } while(e.eType != appStopEvent); } // Main function; required for all applications DWord PilotMain (Word cmd, Ptr cmdPBP, Word launchFlags) { if (cmd == sysAppLaunchCmdNormalLaunch) { // application launched FrmGotoForm(Form1Form); // go to Form1 form EventLoop(); } // run main event loop return 0; } // Main event handler Boolean Form1Handle(EventPtr event) { Boolean Handled=false; switch (event->eType) { case frmOpenEvent: Handled=true; FrmDrawForm(FrmGetActiveForm()); break; case nilEvent: Handled=true; break; case ctlSelectEvent: // Button: click switch (event->data.ctlSelect.controlID) { case Form1StopButton: // 'Stop' button SimpleFunction(); break; } Handled=true; break; default: FrmHandleEvent(FrmGetActiveForm(), event); Handled=true; break; } return Handled; }