qmk_firmware/keyboards/mitosis
Jeff Epler 9632360caa
Use a macro to compute the size of arrays at compile time (#18044)
* Add ARRAY_SIZE and CEILING utility macros

* Apply a coccinelle patch to use ARRAY_SIZE

* fix up some straggling items

* Fix 'make test:secure'

* Enhance ARRAY_SIZE macro to reject acting on pointers

The previous definition would not produce a diagnostic for
```
int *p;
size_t num_elem = ARRAY_SIZE(p)
```
but the new one will.

* explicitly get definition of ARRAY_SIZE

* Convert to ARRAY_SIZE when const is involved

The following spatch finds additional instances where the array is
const and the division is by the size of the type, not the size of
the first element:
```
@ rule5a using "empty.iso" @
type T;
const T[] E;
@@

- (sizeof(E)/sizeof(T))
+ ARRAY_SIZE(E)

@ rule6a using "empty.iso" @
type T;
const T[] E;
@@

- sizeof(E)/sizeof(T)
+ ARRAY_SIZE(E)
```

* New instances of ARRAY_SIZE added since initial spatch run

* Use `ARRAY_SIZE` in docs (found by grep)

* Manually use ARRAY_SIZE

hs_set is expected to be the same size as uint16_t, though it's made
of two 8-bit integers

* Just like char, sizeof(uint8_t) is guaranteed to be 1

This is at least true on any plausible system where qmk is actually used.

Per my understanding it's universally true, assuming that uint8_t exists:
https://stackoverflow.com/questions/48655310/can-i-assume-that-sizeofuint8-t-1

* Run qmk-format on core C files touched in this branch

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-08-30 10:20:04 +02:00
..
keymaps Use a macro to compute the size of arrays at compile time (#18044) 2022-08-30 10:20:04 +02:00
config.h Move keyboard USB IDs and strings to data driven: M (#17859) 2022-08-03 17:15:43 +10:00
info.json Move keyboard USB IDs and strings to data driven: M (#17859) 2022-08-03 17:15:43 +10:00
matrix.c Move more UART-based keyboards to use timeout correctly. (#17329) 2022-06-08 14:51:41 -07:00
mitosis.c Make Swap Hands use PROGMEM (#12284) 2021-05-09 23:21:09 -07:00
mitosis.h Change keyboard level include guards to pragma once (#14248) 2021-09-01 19:03:14 +10:00
readme.md Modified URLs to point to new locations 2019-01-13 09:11:18 -08:00
rules.mk Convert some more boards to Matrix Lite (#15489) 2021-12-27 21:15:56 +11:00

Mitosis

Mitosis

A wireless split compact keyboard.

Keyboard Maintainer: @reversebias
Hardware Supported: Mitosis PCB
Hardware Availability: See the Mitosis keyboard announcement and discussion

Make example for this keyboard (after setting up your build environment):

make mitosis:default

See build environment setup then the make instructions for more information.

Notes

Some circuit board manufacturers including DirtyPCBs and PCBWay offer a steeply discounted "prototyping" rate for a small quantity of identical circuit boards less than 100x100mm in size. The Mitosis was designed to take advantage of this, so that individuals might affordably manufacture their own without waiting for a group-buy.

These configuration files were based off the Atreus keyboard. It assumes a Pro Micro is being used, however retains the 'make upload' feature from the Atreus branch.

This keyboard uses a completely different 'matrix scan' system than most other keyboards supported by QMK. Here, QMK runs in a Pro Micro on a receiver module, and communicates only with an nRF51822 microcontroller module that in turn does wireless communication. The nRF51822 maintains a matrix of keystates received from the same microcontrollers on each of the keyboard halves. The matrix.c file contains the code to make the Pro Micro poll the external wireless microcontroller for the key matrix. As long as this file is not changed, all other QMK features are supported.

Mitosis keyboard build log, including many photos and notes about the assembly process.

Mitosis keyboard hardware design files, including PCB schematics and manufacturing files, parts list, and a laser-cutting template for the neoprene base.

Mitosis keyboard wireless firmware for the Nordic microcontrollers.