Commit Graph

98 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.
v0.00.002
2025-01-09 06:03:43 -04:00
hayodea 2a397ae064 Build: Check for libXCB when building XcbXorg sense API 2025-01-08 18:36:34 -04:00
hayodea 88df316013 build: Conditionally compile senseApis 2025-01-08 18:27:40 -04:00
hayodea 396bcefbf4 XcbXorg: Fill in correct placeholder implexor algo name 2025-01-08 18:00:07 -04:00
hayodea 62db724246 senseApiMgr: Fix formatting 2025-01-08 17:58:08 -04:00
hayodea bbbd6c36cd Release: Tagging v0.00.002:
* Loadable sense API libraries.
2025-01-08 17:34:33 -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 376b29871b Change version to 0.00.001. 2025-01-08 06:35:34 -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 v0.00.001 2025-01-07 20:03:03 -04:00
hayodea b9faa147e3 Docs:devspec: Server renamed to provider 2025-01-07 19:58:23 -04:00
hayodea 1d139644d6 Use move semantics in cmd line parsing 2025-01-07 18:54:00 -04:00
hayodea e89a38203e docs:devspec: update docs with new device-type prefix syntax 2025-01-07 14:31:30 -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 4f224003fd Main: Invoke parser and print out results 2025-01-07 14:14:57 -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 f86daf97c1 Build: Check for Flex and Yacc 2025-01-07 14:04:03 -04:00
hayodea 2068feacaf vscode: New eccentricities 2025-01-07 14:03:04 -04:00
hayodea 2b75355f98 docs:devspec: Update grammar notes 2025-01-07 12:15:52 -04:00
hayodea 46ef17bb05 Docs:deviceSpec: Update spec and document separators 2025-01-06 21:00:31 -04:00
hayodea ec323da614 Build:m4: Add AC_PROG_[FLEX/BISON] from the MESA source code. 2025-01-06 20:59:45 -04:00
hayodea 597155a871 docs:devspec: fix example 2025-01-05 20:07:16 -04:00
hayodea 2c3ea2359d Docs:deviceSpec: Update server params: parentheses mandatory 2025-01-05 17:43:00 -04:00
hayodea ef5022f815 Docs: Add deviceSpec specification
Currently only has a spec for sensors. We'll create and add a
spec for actuators later.
2025-01-05 16:51:12 -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 0232293bb0 whitespace 2025-01-05 14:03:44 -04:00
hayodea 77e6eca091 main: Gh copilot insists on this formatting 2025-01-05 14:01:16 -04:00
hayodea e51a6bb729 Vscode: New c++ include associations I guess 2025-01-05 13:58:25 -04:00