diff options
Diffstat (limited to 'ACE/apps/FaCE/README')
-rw-r--r-- | ACE/apps/FaCE/README | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/ACE/apps/FaCE/README b/ACE/apps/FaCE/README new file mode 100644 index 00000000000..a4bd2d981b1 --- /dev/null +++ b/ACE/apps/FaCE/README @@ -0,0 +1,287 @@ +=== +=== FaCE (Front-end for ACE CE) +=== +=== Object Computing, Inc. <http://www.ociweb.com> +=== St. Louis, Missouri +=== Copyright (C) 2002. All rights reserved. +=== +=== V1.01, March 30th, 2002 +=== + + +== What's FaCE? + +FaCE is a simple front-end framework for testing and debugging non-Windows +CE applications on the Pocket PC 2002 platform. Originally, FaCE was +developed to test ACE and TAO components internally in Object Computing, Inc. +However, since it has shown dramatic increase of productivity in a lot +shorter amount of time, it has been prepared as a package for all programmers +who want to test and run existing codes (non-WinCE native codes) on Pocket PC +2002 and WinCE 3.0. + +The features of FaCE are: + + 1. command line parameter support + 2. command line history support (never type in same command line again) + 3. output displayed on the windows screen + 4. output to file (with append and overwrite support) + 5. does not use MFC + 6. almost no modification to existing user code + 7. easy to enable and disable after install + +* Default project files only contain Pocket PC 2002 platform configuration. + A new configuration can be added for other WinCE 3.0 platform from eVC. + + +== Package Contents + +Files contained in FaCE package are: + + Main Framework Files for both ACE users and non-ACE users + - ACE_Racer.bmp + - FaCE.h & cpp + - FaCE.ico + - FaCE.rc + - newres.h + - resource.h + - TAO.bmp + + ACE entry point definition file + - FaCE_OS.h + + Additional Framework files for non-ACE users + - CE_ARGV.h & cpp + - CE_Screen_Output.h & cpp + + Files for loading skeleton FaCE from eVC + - FaCE.vcp & vcw : FaCE Project files for ACE users + - FaCENOACE.vcp & vcw : FaCE Project files for non-ACE users + - Main.cpp : almost empty entry point function + + Misc. Files + - ACE.ico : a bonus icon of ACE logo + - License.txt : license and warranty information + - ReadMe.txt : this document + + +== Requirement + + - Microsoft(C) eMbedded Visual Studio/C++ (eVC) 3.0 + - Pocket PC 2002 SDK + + ** For ACE-users only: + - ACE+TAO installed and configured for WinCE build only for ACE-users + - ace and ace_os libraries built for WinCE and loaded on machine + + +== Important Note + +It has been reported that certain Pocket PC 2002 machines with ARM processor +can be totally dead and will not even respond to the hard reset. While the +real cause of this problem is unknown, HP has released a patch for this +problem. We have tested it, and it seems working fine on our machine (HP +Jornada 568), which is our 5th machine that has been running fine for the +longest time. + +As this has been identified by hardware manufacturer and can be fixed as HP +did, Object Computing, Inc. (OCI) or any member of ACE+TAO community cannot +be responsible for this problem. If this problem happens during debugging, +contact your hardware manufacturer for fix or replacement. It has found +that almost all Pocket PC 2002 machines regardless of manufacturers have same +problem. + +Also, Phil Mesnier at OCI has found that virtual function calls under certain +situation can cause a problem that randomly changes parameter and pointer +values over function calls. This is due to the incorrect instructions +generated by eVC for ARM processor. So far, no solution or patch has been +released by compiler vendor, although vendor is aware of this problem. + +Since Pocket PC 2002 is based on WinCE 3.0, ACE+TAO as well as FaCE should +be able to run on any WinCE 3.0 platform by adding a new configuraion with +minimal change. + + +== Installation & Setup + +1. Create a subdirectory named 'FaCE' (or anything in your taste) under + your current project directory. + +2. Copy FaCE_OS.h to the ACE_ROOT/ace directory, and add following line at + the end of your ACE_ROOT/ace/config.h file: + + #include "FaCE_OS.h" + +3. Copy main framework files listed above and add them into "your" project + (NOT FaCE.vcw/vcp). For non-ACE users, copy additional framework files + for non-ACE users in addition to the main framework files. + It would be a good idea to create a new folder in your project and put + all FaCE files into it. This way, it will be easy to disable FaCE by + setting the folder excluded from the build on the folder property option. + + ** IMPORTANT! ** + FaCE does NOT use MFC. Thus, if your project is already set for + 'Not using MFC', then do not change the setting. + + * Note: Make sure those files are not shared by multiple executables. + Each project must have its own copy of those files. + It is a good idea to create a separate folder on your project + and put FaCE related files into that folder. In that case, + if you want to disable FaCE and run by using normal 'main', + then you can simply set the whole FaCE folder excluded from + build in the project setting menu. + +4. Change your 'main()' function part similar to the following example. + + #ifdef ACE_HAS_WINCE + #include "FaCE/FaCE.h" // use the name of subdirectory you created + int FaCE_MAIN (int argc, ACE_TCHAR *argv[]) + #else + int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) // ACE normal entry point + #endif + + Change the directory name for "FaCE/FaCE.h" if necessary. + For non-ACE users, use 'UNDER_CE' instead of 'ACE_HAS_WINCE'. + + == Possible Additional Change + + Above change will be the only change if your program compiles and links + fine under eVC. It does not mean that your program is WinCE-ready but + just means that your program does not include the libraries that are not + supported by WinCE, such as iostream. + + For ACE users, good examples will be the ACE test programs under + $ACE_ROOT/test. + + For non-ACE users, I highly recommend to create a project for WinCE first + if it has not already been done and write your code using wmain. + Try compile and link your program without FaCE to check your program does + not include any libraries not supported by WinCE. FaCE supports text output + by aliasing 'cout' in FaCE.h; however, it is NOT a real iostream but an alias + for CE_Screen_Output class. You may need to use '#ifdef UNDER_CE' for your + iostream includes, if you want to share the code among different platforms. + + Also, it is important to match the parameter types for 'wmain' function. + For WinCE, it MUST be in the format of: + + int FaCE_MAIN (int, wchar_t**) + + and you can leave your original wmain type as it was for non-CE platform + definition. + +5. Go to 'ResourceView' or double-click on the 'FaCE.rc'. Open 'String Table -> + String Table' from the resource browse view, and change the string value (caption) + defined for 'IDS_APP_TITLE' from 'FaCE' to your program name. This will + help identifying multiple FaCE-fied applications when you brose them + through system memory -> running programs in case of crash. + +6. That's it! + +** Optionally, you can personalize the icons defined for FaCE for your own. + To do this easily, load "FaCE.vcw" (requires ACE library) or "FaCENOACE.vcw" + from eVC. Also, FaCENOACE.vcw can be used as 'hello world'-type starting + frame-work for non-WinCE programmers. + +** Non-ACE users may see the warning messages saying, "Could not find the file xxx", + for ace.h, Log_Msg.h, OS.h, and CE_Screen_Output.h. This is due to the eVC's + not-so-perfect precompilation file checking and totally harmless. + +** Later if you don't want to use FaCE anymore, simply restore your original + main function and remove FaCE files from your project (or exclude FaCE files + from build). ACE library does not have to be rebuilt as FaCE_OS.h only + contains macro. + +== Running FaCE + +1. Command line option + +User can specify the command line option for the program by using 'Settings -> +Command Line' from the FaCE menu. FaCE will automatically save all user-entered +command line parameters as a ASCII format file named 'Parameters.txt' in the +root directory of WinCE device/emulator. User can edit and change by openning +this file from any text editor and save as a ASCII text file with DOS standard +CR/LF combo. This will greatly save time especially when you are working on the +Pocket PC machine that does not have keyboard. Remember NOT to convert file +format to Unicode; it must be standard DOS ASCII text file. + +2. Output Saving + +You can save output to file by selecting 'Tools -> Save To File'. By default, +FaCE will not create/save any file. Also, any output received before setting +up this feature will not be saved. + +If the file with specified name exists, FaCE will ask whether you want to +append to the end of file or erase and overwrite. All output files will be +saved in the root directory of the system. + +3. Running Your Program + +'Setting -> Run' will execute your program. Two tags, 'START' and 'END' +indicate the beginning and end of your code. + +For ACE users, any log message sent to ACE message log (ACE_DEBUG, for example) +will be displayed on the screen. Also, if you have setup to save to file, +the same contents will be saved to the file as well. Note that the output will +NOT have ACE internal tags (i.e. Dec 04 14:51:12.000 2001@LM_DEBUG@) because +FaCE uses callback message function, and ACE does not pass those tags along +with the output message. + +For non-ACE users, you can declare your own local copy of CE_Screen_Output +object. For example, you can declare CE_Screen_Output object in your cpp file +like: + + CE_Screen_Output cout; + +and use it like, + + int a = 100; + wchar_t* strTemp = L"Hello, world!"; + cout << L"String : " << strTemp << L"a = " << a << endl; + +Remember, CE_Screen_Output is just a simple text output function and does not +have the full capabilities of iostream, which is not available for WinCE 3.0. + +4. In case of crash + +If you have started your code, but the code crashes, which can be easily +identified by looking for the 'END' tag, then you can use Windows CE's memory +program to kill the process (Start -> Settings -> System tag -> Memory -> +Running Programs tag). If you have changed IDS_APP_TITLE in the resource +viewer, then you will see the name you have specified; otherwise, FaCE will be +listed. You can select the name and stop the process by clicking 'Stop' button. +Sometimes, you may need to reset the machine if you cannot access memory program. + + +== Note + +- This FaCE framework does not use any MFC; it only uses general Win32 + API, thus, your project setting does not have to be changed. + +- FaCE is for the 'legacy' Unix/DOS style console applications that + do not use any Win32 and MFC for Windows OS. Programs that are already + using native Windows/WinCE API's will not need FaCE framework. + +- If you run your application from FaCE (Settings -> Run), 'START' and + 'END' will appear at the beginning and end of output messages from your + application. If you see 'END' lable after execution, you can run your + program again without exit and start up FaCE again. + +- Make sure to terminate FaCE by selecting 'Settings -> Exit'. It will + completely terminate FaCE session; Clicking on the 'X' button + at the top-left corner of the screen will not, just like most WinCE programs. + +- FaCE_MAIN is only for the WinCE port of ACE, ensuring proper windows system + message filtering along with proper registraion so that user can see the + process from memory setting and task switcher applications. + +- ACE and FaCE do not overrides native WinMain. If you are developing for + Windows OS only, your WinMain should be just safe from any overrides. + In this case, of course, you don't need to use FaCE package. + + +== Question or Comment + +If you have question and/or comment specific to the FaCE, please contact +Si Park at spark@ociweb.com or Justin Michel at michel_j@ociweb.com. + +For general ACE+TAO support, please refer to comp.soft-sys.ace or contact +Object Computing, Inc. at http://www.ociweb.com. |