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