Add README.md
authorDavid Llewellyn-Jones <david@flypig.co.uk>
Sun, 19 Apr 2020 17:11:21 +0000 (20:11 +0300)
committerDavid Llewellyn-Jones <david@flypig.co.uk>
Sun, 19 Apr 2020 17:11:21 +0000 (20:11 +0300)
README.md [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
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
+