Thomas Touhey 55a3892d50 | ||
---|---|---|
doc | ||
include | ||
src | ||
tools | ||
.gitignore | ||
AUTHORS.md | ||
LICENSE.md | ||
Makefile | ||
Makefile.msg | ||
Makefile.vars | ||
README.md | ||
TODO.md | ||
configure |
README.md
libp7 - Casio Communication Protocol 7.00 implementation
Introduction
Protocol 7.00 (or "Protocol 7") is the communication protocol used by CASIO FX calculators, between them and with a PC (serial and USB). It allows model identification, file interaction (with main memory and flash/SD storage devices), screenstreaming and OS updating.
This library brings functions to send and receive packets, and packet flows such as file getting/sending, remote file interaction (listing, copying, deleting), filesystem optimization, screen receiving and OS Update-related (backup, executable sending). No interaction with the main memory is implemented yet.
Screen receiving is only supported for monochrome calculator as the format for other calculators are yet to be known.
This library has two main parts: find the devices to communicate with, through cross-platform streams (P7 streams, a superset of local streams, including libc and libusb ones), and talk P7 with them.
This library require environment knowledges because of protocol failure. Those
are hardcoded; for each newly discovered environment (new calculator, ...),
entry must be added in the src/core/devices.c
file, in the
known_environments
list, using and updating command masks if necessary.
A precise environment listing is required to have a clean detection of what
commands and devices we can or cannot run so we don't have any surprise.
More on the P7 homepage.
Prerequisites
Side note: the library might work with older versions of these dependencies, I took these as a reference because these are the ones I work with.
Making-only dependencies
Name | Version |
---|---|
make | >= 4.0 |
gcc | >= 4.9 |
binutils | >= 2.25 |
asciidoc | >= 8.6.9 |
gzip | >= 1.6 |
Making and runtime dependencies
Name | Version |
---|---|
libusb | >= 1.0 |
Building
Just ./configure
then make
.
To install, use make install
.
To build and install only the lib, use all-lib
and install-lib
.
To build and install only the docs, use all-doc
and install-doc
.
Other useful targets:
uninstall
,uninstall-lib
,uninstall-bin
uninstall-doc
: will try to uninstall using the current configuration;mostlyclean
,clean
,clean-doc
,mclean-lib
,clean-lib
: remove built files at different levels;re
,re-lib
,re-doc
: regenerate built files at different levels (clean and build) -- useful when configuration changes.