Commit Graph

52 Commits

Author SHA1 Message Date
hayodea 53583e5735 SenseApiLib, SenseApiDesc improvements, new Sense API Mgmt Lib Ops role
SenseApiDesc:
* Use a number count for num exported implexor APIs instead of
  NULL-terminated list.
* Add sanity checker functions for structs.

SenseApiLib:
* Invoke the new sanity checkers on new Lib objects.
* SenseApiDesc is now a member object instead of being
  pointed to.

SenseApiManager:
* loadSenseApiLib now calls the SenseApiDesc getter function.
* loadSenseApiLib now fills out the SenseApiLib class object.

New Sense API Mgmt Sub-API:

This sub-api (metalanguage, some might call it) is used to initialize
the lib's connection to the provider. After this call, the lib should
be ready to attach new devices to its provider on behalf of Hk.
2025-01-09 06:03:43 -04:00
hayodea 62db724246 senseApiMgr: Fix formatting 2025-01-08 17:58:08 -04:00
hayodea d14cef5328 Move senseApi libs into their own outer subdir 2025-01-08 17:28:21 -04:00
hayodea 988e84a545 Pretty up exception message 2025-01-08 15:09:18 -04:00
hayodea 4f2fbaa255 Fix NULL ptr use from dlerror() 2025-01-08 15:08:51 -04:00
hayodea 01ddb6d842 Only search in senseApiLibPath if it's actually set 2025-01-08 15:08:23 -04:00
hayodea 1178970728 cmd:opts: Now set OptionParser::argv0 to argv[0] 2025-01-08 15:07:42 -04:00
hayodea 090f0d3b02 senseApiMgr: new method: loadAllSenseApisFromOptions
This method dlopens() all senseApi libs that were referenced by
device specs.
2025-01-08 15:06:31 -04:00
hayodea 04db7bf76c Fix build warning about decltype(dlclose) 2025-01-08 15:05:56 -04:00
hayodea 2dc3083cdb whitespace 2025-01-08 13:47:16 -04:00
hayodea bffa2b837c Opts: Make singleton; senseApi: check senseApiLibPath, get senseApiDescFn pointer.
* OptionsParser now has a singleton.
* We now use the cmdline opt -p <senseApiLibPath>, and search for
  the specified library in:
  * senseApiLibPath, then CWD, then the place where our executable
    is running from, and then finally we let the hosting OS do
    its own search.
* We now call dlsym() on dlopen()'d libs to to get the senseApiDescFn
  pointer.
2025-01-08 13:43:44 -04:00
hayodea b40790ee4a Whitespace 2025-01-08 11:50:16 -04:00
hayodea c864bcfdd2 SenseApis: Define descriptors exported by libs 2025-01-08 11:49:28 -04:00
hayodea f5e3986644 DeviceSpec:parser: improve exception messages 2025-01-08 11:46:59 -04:00
hayodea 5a5e2fa25f Fix const_cast and rearrange logic in senseApi method 2025-01-08 07:56:10 -04:00
hayodea b9aa53822f Indentation 2025-01-08 07:27:48 -04:00
hayodea fe3f911db4 SenseApis: New senseApiManager and X11XcbApi
Still fleshing these out but ultimately senseApiMgr will manage
sense apis, and the X11XcbApi is where we'll connect to Xcb and
read the screen.
2025-01-08 06:26:36 -04:00
hayodea f594d29a2d DevMgr: Add sensorDevSpecs list and make intero/extro lists use unique_ptr 2025-01-08 06:23:34 -04:00
hayodea 6a494f7ff7 cmd:opts: New -a (sense-api shlibs) and -p (api shlib search dir) opts 2025-01-08 06:19:46 -04:00
hayodea 36acbdfc36 cmd:opts: Add senseApiPath in prep for new cmd opts 2025-01-08 00:32:07 -04:00
hayodea dd7a75d9b5 devSpec: Update preprocessor error message 2025-01-07 20:21:15 -04:00
hayodea dda8527e45 DeviceSpec: Rename server to provider 2025-01-07 20:03:03 -04:00
hayodea 1d139644d6 Use move semantics in cmd line parsing 2025-01-07 18:54:00 -04:00
hayodea fe09b00c7f Fix build error 2025-01-07 14:24:22 -04:00
hayodea e86a75e232 devSpec:lex: Fix devSpecType keywords
We can't use a plain single letter anymore, so now let's
use some longer keywords instead. New keywords are:
* +idev: interoceptors.
* +adev: actuators.
* +edev: extrospectors.
2025-01-07 14:23:25 -04:00
hayodea 54de145b2d DevMgr: Add methods to print the parsed devSpecs 2025-01-07 14:14:24 -04:00
hayodea 42413d1cc6 DevMgr: Implement a wrapper around the yacc parser.
This wrapper reads the -d <devfile> arguments, collates
them into one big string and then feeds them into yacc.
2025-01-07 14:11:51 -04:00
hayodea 5c3bbdf114 Devspec: Add lexer and parser for devSpecs
This grammar looks simple but it consumed 2 days of my time
and it's giving me bugs all the same, but mostly working
nicely.

See the syntax documentation in /docs
2025-01-07 14:09:31 -04:00
hayodea 3b6ca14275 CmdOpts: merge -[i|a|e] into one -s option
We augmented the grammar to specify the type of device (intero,
extro or actuator) so we can now collapse the 3 dev spec cmd
line opts into 1 opt.
2025-01-07 14:05:23 -04:00
hayodea 6307d2869e DeviceManager: Initial class with DeviceSpecParser
Hopefully by the end of tonight we should be done with the dev
spec parser.
2025-01-05 14:19:53 -04:00
hayodea f16d3b24b3 cmdopts: Now accepts 0 or more -d opts
In preparation for the deviceSpecParser.
2025-01-05 14:04:31 -04:00
hayodea 00ce114d40 cmdopts: Add a -?/--help option 2025-01-05 13:35:14 -04:00
hayodea 77a19deb8e cmdopts: Add --interceptor, --extrospector, --actuator and --devicefile 2025-01-05 13:25:40 -04:00
hayodea b4e51a0d49 Rename: implix to implex 2025-01-05 12:03:08 -04:00
hayodea 52b6d72132 Build: Use relative paths for includes 2025-01-05 07:47:38 -04:00
hayodea 90cab325e3 Mind: Rename simulator instance to "canvas" 2025-01-04 18:17:19 -04:00
hayodea 2eddecb7d6 Extrospector and Interoceptor both inherit from Sensor now 2025-01-04 14:34:54 -04:00
hayodea aa48342bc2 New classes: Sensor and Extrospector 2025-01-04 13:48:29 -04:00
hayodea bc589e28b7 formatting 2025-01-04 13:48:09 -04:00
hayodea 06e3db82ac Rename IntrinInteroceptor=>IntrinTeroceptor, NeutralInteroceptor=>NeutrinTeroceptor. 2025-01-04 13:46:33 -04:00
hayodea 89c8936e64 New class: Singlecept. Inherits from MentalEntity 2025-01-04 13:38:27 -04:00
hayodea 9e5ea0d78c Indentation, word wrap 2025-01-04 13:38:08 -04:00
hayodea 03a6590981 Rename [Pleasure/Pain]Interoceptor to [Postrin/Negtrin]Teroceptor 2025-01-04 13:36:18 -04:00
hayodea a1edf27e9e Idlework 2025-01-04 13:21:33 -04:00
hayodea dbbd3c477b Formatting 2025-01-04 13:21:24 -04:00
hayodea 0468046692 New class hk::Implix replaces Existent 2025-01-04 11:47:55 -04:00
hayodea 6ae037c7e7 Director: now has a goal. Goal inherits from Scene 2025-01-04 11:36:50 -04:00
hayodea c3461a73bb Hcore: Put everything in namespace hk:: 2025-01-04 11:32:37 -04:00
hayodea 841441806c Now builds.
* Cut out all extraneous includes.
2025-01-04 07:33:15 -04:00
hayodea 6beda55971 Add Director, director::CommandList, hk::Goal and fixups
* Simulator and Director are no longer singletons.
2025-01-03 21:22:03 -04:00