cake
/
libp7
Archived
1
0
Fork 1
This repository has been archived on 2024-03-16. You can view files and clone it, but cannot push or open issues or pull requests.
libp7/PORTING.md

1.5 KiB

Porting libp7 to a new platform

Basically, the two things you will have to do to port libp7 to a new platform is making macros for non-standard but required functionnalities from your platform's libc, such as endianness correcting or sleeping, in the internal headers located in include/libp7/internals/, and make a custom stream adapted for your platform and prototype it.

libp7 streams are the libp7 abstraction between it and the calculator device. You can check out the current streams in src/stream/. Currently supported streams are libc FILEs, Unix-like streams (with file descriptors), Microsoft Windows's libc streams (HANDLEs) and libusb streams (which can be disabled by passing --no-libusb to the configure script). Each stream must implement a function to connect to the device using p7_sinit, and functions to read and write, and eventually one to set communication settings from cross-platform values defined by libp7. You should really check out p7_sinit's manpage.

You should as well make up a constant like P7_DISABLED_<your type of stream> (e.g. P7_DISABLED_LIBUSB, P7_DISABLED_STREAMS, P7_DISABLED_WINDOWS), and define it in libp7/stream.h aside with the prototypes of your functions.

Once this is done, you will want to hook your stream to one of the libp7 standard initialization functions: p7_init or p7_cominit. In order to do this, you should add it your functions to the content of at least one of these two functions. Platform-specific things are preferred in your stream's source file.