Low Level Documentation
Library Fieldpine Internals Replication Gds Security Fpos.dll Startup logic PosGreen Network PosGreen Install Process Multicast Protocol Data Structures Settings Logic Trace

Logic

Security Model Product Distribution Gateways Staff Login Stock Levels Shipping Addresses Agency Stores

PosGreen Engine This engine provides the bulk of the POS processing at checkouts. It can be used directly or via central servers as a remote service.

Contexts & Sessions

Advanced

Spill Database

Fpos.dll

The following outlines some of the main steps performed during startup. Some details are removed or simplified. This information is "as is" and may change without notice


Detailed Startup Logic

  1. The processor serial number is fetched and ability of CPU decoded
  2. The registry is scanned for any legacy usage.
  3. Configuration parameters such as location, lane are loaded
  4. The command line is parsed
  5. If MaxElapsed timer is enabled, a thread is started to kill the process if still active when the timer expires. This is not normally used.
  6. If fpos.ctl does not exist, rename any fpos.ctl_install to fpos.ctl. This is used for automated installation support
  7. Files fpos.ctl and fpos_all.ctl are processed
  8. If not disabled, search and connect to our parent Gds.
  9. Startup debugging or journalling options, if specified.
  10. The Message "Point 1" is displayed if "-trace" was used
  11. Rudimentary checks are undertaken to ensure EXE and DLL files have not been tampered with
  12. The Message "Point 2" is displayed if "-trace" was used
  13. Crash handlers are installed. Beyond this point, coding errors should generate a crash.out rather than exception/crash messages to users.
  14. If quickstart was not specified, the time is retrieved and the year verified to be vaguely sensible. If the year is deemed wrong, a message is displayed and the system exits.
  15. The Message "Point 3" is displayed if "-trace" was used
  16. Internal structures are created
  17. The Message "Point 4" is displayed if "-trace" was used
  18. The system status is updated internally.
  19. The Message "Point 5" is displayed if "-trace" was used
  20. A scan is performed to see if this could be the first startup since installation. If yes, install specific steps are undertaken
  21. Potential database interface DLLs are loaded and given the chance to come online

    If you are using DbcDao2000.dll as your interface DLL (this is most commonly used), it will display the following trace messages

    • The dll initialises itself
    • The Message "Point 6" is displayed if "-trace" was used
    • The Windows APIs are prepared
    • The database is opened using the relevant Open() call.
    • The Message "Point 6c" is displayed if "-trace" was used
    • If dummy reading is configured or required, a select * from versioncontrol is performed.
    • Journals are started
    • The Message "Point 7e" is displayed if "-trace" was used and we trap to error handlers.
  22. Any pre database Mini-C functions defined are loaded and run
  23. If selected, a speed test is executed on the folder holding the database. If too slow, the user is warned but operation continues. Other startup checks may also be randomly executed now (TEMP files)
  24. The Sql database is opened. The system may hang/pause waiting for up to 30 minutes if the database is not reachable
  25. The Message "Point 7m" is displayed if "-trace" was used
  26. The table "versioncontrol" is read and validated. Additional "Point-7..." messages may be displayed
  27. Mesh storage is bought online
  28. The Message "Point 8" is displayed if "-trace" was used
  29. Database meta data is loaded
  30. UserOptions are loaded
  31. Symbols processor is initialised
  32. The current working directory is checked for Read/Write access. The Pos creates a file (dircheck.delete), writes to it, and deletes it.
  33. FolderLock and LaneLock files are created so that accidental double use in a shared folder environment cannot happen.
  34. If multilane functionality/table is present in the database, these checks are performed.
  35. The Message "Point 8-preset" is displayed if "-trace" was used
  36. Settings are loaded
  37. Flow handling is enabled.
  38. System memory is prepared
  39. StoreServer and Integrity are initialised
  40. Any mini-C programs in fpos.ctl are executed
  41. Mesh is fully loaded
  42. If persistent debug trace is enabled, it is opened
  43. Any system settings policies are applied
  44. If speech is enabled, the voices are initialised.
  45. USB thumb drives are prepared
  46. The Message "Point 8-set" is displayed if "-trace" was used
  47. The database subsystem is bought fully online
  48. The Message "Point 8-dbst" is displayed if "-trace" was used
  49. System Config settings are initialised.
  50. The Message "Point 8-sc" is displayed if "-trace" was used
  51. The country specific information is loaded
  52. The Message "Point 8-country" is displayed if "-trace" was used
  53. Systems with multiple checkout support are enabled.
  54. The Message "Point 8-twin" is displayed if "-trace" was used
  55. The internal web server is bought online
  56. The Message "Point 8-http" is displayed if "-trace" was used
  57. Auditing is initialised
  58. The Message "Point 8-audit" is displayed if "-trace" was used
  59. If specific retail keyboards are in use, a Windows Keyboard hook (process level) is installed if needed
  60. The Message "Point 9-preset" is displayed if "-trace" was used
  61. If keyboard wedge barcode scanners are enabled, they are started. Also any other "keyboard" devices
  62. Command line option "extract" is performed now if present.
  63. The Message "Point 10" is displayed if "-trace" was used
  64. Network lanes are loaded if required.
  65. Online sales interfaces are loaded
  66. If "web" mode is being used, startup forks to that mode of operation (not documented, but does not return.
  67. The Message "Point 11" is displayed if "-trace" was used
  68. More barcode scanners are enabled
  69. Cash drawers are enabled
  70. Retail Keyboards are enabled (these are custom selling keyboards in addition to standard PC keyboards)
  71. The User Interface is created
  72. Shifts are enabled
  73. The version of Pos software is checked and if different user is advised. The message to the user is more for confirming that updates have applied.
  74. If the software version was changed (or file bisupd.txt exists), required fields are checked to ensure they are present
  75. (16 May 2016, P1928) Printers queue names used by different receipt formats are checked to ensure they are valid. The setting StartupCheckPrinterMask controls if this check is performed.
  76. If Designer mode is set to auto start (setting DsnAutoStart), the Pos designer screens are created
  77. Any command line PosCommand is executed.
  78. If the startup option, "norun" was specified, the system pauses to allow background tasks to complete and then exits.
  79. The Message "Point 12" is displayed if "-trace" was used
  80. Plugins and external DLLs are loaded and enabled
  81. Licensing is checked
  82. Database is size checked if it has maximum sizes
  83. Check and advise user if there is possibility that data has changed since we last ran.
  84. More extensions are enabled if present.
  85. Sales that were active when we exited and loaded, this includes Eftpos powerfail recovery of needed.
  86. Database storage layer is advised startup is completing
  87. Startup PosCommands and PrinterResets are executed if enabled.
  88. A background cleanup thread is started at low priority.
  89. If float prompting is needed, user is prompted for the float details
  90. The Message "Point 12-End Of Startup Sequence" is displayed if "-trace" was used
  91. If AutoRun files are present (typically for regression testing), these are executed
  92. A startup performance event is logged. This includes timers for many of the above operations