From d5364bf7b28da9f4d530d11aa7583ecff7fc7269 Mon Sep 17 00:00:00 2001 From: David Llewellyn-Jones Date: Sun, 19 Apr 2020 20:11:21 +0300 Subject: [PATCH] Add README.md --- README.md | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..fc5896f --- /dev/null +++ b/README.md @@ -0,0 +1,115 @@ +# libcontrac ReadMe + +libcontrac is an implementation of the Contact Traing API. + +## Install + +If you have autoconf you can install as follows. + +```` +./configure +make +make check +make install +``` + +## Usage + +Include header files. +``` +#include "contrac/contrac.h" +#include "contrac/rpi.h" +#include "contrac/dtk.h" +#include "contrac/rpi_list.h" +#include "contrac/rpi_list.h" +#include "contrac/matches.h" +``` + +### Broadcasting and uploading keys + +Most of the functionality revolves around the Conrac structure. + +Create and initialise the structure as follows. The day and interval number +should be set appropriately. +``` +Contrac * contrac = contrac_new(); +contrac_generate_tracing_key(contrac); +contrac_set_day_number(contrac, 23); +contrac_set_time_interval_number(contrac, 76); +``` + +Get the Rolling Proxmity Identifier for broadcast in Bluetooth beacons. +``` +// Returns a buffer containing RPI_SIZE bytes of data +const unsigned char * rpi = contrac_get_proximity_id(contrac); +``` + +Get the Daily Tracing Key to upload to a Diagnosis Server in case of a positive +test result. +``` +// Returns a buffer containing DTK_SIZE bytes of data +const unsigned char * dtk = contrac_get_daily_key(contrac); +``` + +### Receiving and matching keys + +Add RPIs captured via Bluetooth to an RPI list. +``` +RpiList * rpis = rpi_list_new(); +Rpi * rpi = rpi_new(); + +// Add captured bytes at given time +rpi_assign(rpi, captured_bytes, time_interval_number); +rpi_list_append(rpis, rpi); +``` + +Construct a list of DTKs from data downloaded from a Diagnosis Server. +``` +DtkList * dtks = dtk_list_new(); +Dtk * dtk = dtk_new(); + +// Add data downloaded from the server +dtk_assign(dtk, dtk_bytes, day_number); +dtk_list_append(dtks, dtk); +``` + +Having collected these two lists any matches can be tested for as follows. + +``` +MatchList * matches = match_list_new(); +match_list_find_matches(matches, rpis, dtks); + +if (match_list_count(matches) > 0) { + printf("Exposure identified, follow medical advice\n"); +} +``` + +### Cleaning up + +Finally, clean up. +``` +match_list_delete(matches); +rpi_list_delete(rpis); +dtk_list_delete(dtks); +contrac_delete(contrac); +``` + +## Licence + +Copyright (c) David Llewellyn-Jones, 2020 + +libcontrac is released under the GPL v2 Licence. Read COPYING for information on the license. + +## Contact and Links + +More information can be found at: https://www.flypig.co.uk/contrac + +The source code can be obtained from git: + +git clone git@www.flypig.org.uk:libcontrac + +I can be contacted via one of the following. + + * My website: https://www.flypig.co.uk + * Email: at david@flypig.co.uk + -- 2.25.1