<commit_before># LetMeCreateIoT

## Introduction

A collection of wrappers for the Contiki interfaces made to speed up the development of applications 
for the Mikro-e PIC32MX clicker.

Wrappers:
  - I2C
  - SPI
  - GPIO
  - Interrupts
  - ADC
  - Network
  - Debug over 6lowpan
  - Power saving control

Supported clicks:
  - Relay
  - Thermo3
  - Motion
  - Accel (SPI only)
  - Air Quality
  - Alcohol
  - Color
  - IR Eclipse
  - IR Distance
  - Joystick
  - 8x8R (Led Matrix)
  - Proximity
  - Relay2

## Installation and updating

### Installation

```sh
$ ./install.sh -p path/to/contiki
```

To verify whether installation worked navigate to the examples directory, pick an example of your 
choice and run

```sh
make
```

### Updating

To update the library run:

```sh
git pull
./install.sh
```

As long as a symbolic link to Contiki directory exists the installation script will update all files.

### Feeds

The library checks out the main LMC repo to acquire drivers and apply patches on top of them. If you
prefer to exclude some drivers use the -e option during install with a regex matching the path or
filename:

```sh
./install.sh -e ./click/*
./install.sh -e *relay.*
./install.sh -e *joystick.* -e *relay.*
```

The driver feed headers and source files are also copied to your local repo to let you generate 
documentation with doxygen. Clean your repo when changing the clicks you include/exclude to prevent 
issues with documentation for non-used clickers being generated.

## Development

To use include the appropriate header files in your project, eg.:

```C
#include "letmecreate/core/spi.h"
#include "letmecreate/click/accel.h"
```

For reference how to use the different interfaces or click wrappers refer to a wide selection of 
examples in the examples directory.

### UDP server

In addition to wrappers for common networking functionality you can also find a simple UDP server to
modify for any of your projects. To use it modify server.py to reflect the structure of your data 
and copy it to the CI40. Make sure Python3 is installed then run the server:

```python
python3 server.py<commit_msg>Readme: Added info about the client<commit_after># LetMeCreateIoT

## Introduction

A collection of wrappers for the Contiki interfaces made to speed up the development of applications 
for the Mikro-e PIC32MX clicker.

Wrappers:
  - I2C
  - SPI
  - GPIO
  - Interrupts
  - ADC
  - Network
  - Debug over 6lowpan
  - Power saving control

Supported clicks:
  - Relay
  - Thermo3
  - Motion
  - Accel (SPI only)
  - Air Quality
  - Alcohol
  - Color
  - IR Eclipse
  - IR Distance
  - Joystick
  - 8x8R (Led Matrix)
  - Proximity
  - Relay2

## Installation and updating

### Installation

```sh
$ ./install.sh -p path/to/contiki
```

To verify whether installation worked navigate to the examples directory, pick an example of your 
choice and run

```sh
make
```

### Updating

To update the library run:

```sh
git pull
./install.sh
```

As long as a symbolic link to Contiki directory exists the installation script will update all files.

### Feeds

The library checks out the main LMC repo to acquire drivers and apply patches on top of them. If you
prefer to exclude some drivers use the -e option during install with a regex matching the path or
filename:

```sh
./install.sh -e ./click/*
./install.sh -e *relay.*
./install.sh -e *joystick.* -e *relay.*
```

The driver feed headers and source files are also copied to your local repo to let you generate 
documentation with doxygen. Clean your repo when changing the clicks you include/exclude to prevent 
issues with documentation for non-used clickers being generated.

## Development

To use include the appropriate header files in your project, eg.:

```C
#include "letmecreate/core/spi.h"
#include "letmecreate/click/accel.h"
```

For reference how to use the different interfaces or click wrappers refer to a wide selection of 
examples in the examples directory.

### UDP server & client

In addition to wrappers for common networking functionality the repository contains two Python scripts
that can be used as 6lowpan client/server. Both of them can be found in the scripts directory, and
can be freely modifid to send and receive application data. For more help run:

```python
python3 server.py -h
python3 client.py -h
{'fraction_non_alphanumeric': 0.07137891077636153, 'fraction_numerical': 0.005330243337195829, 'mean_word_length': 3.495833333333333, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4949396', 'n_tokens_mistral': 1294, 'n_tokens_neox': 1222, 'n_words': 605}