This commit is contained in:
		
							parent
							
								
									ed8e362574
								
							
						
					
					
						commit
						65a26a9110
					
				
					 3 changed files with 2 additions and 74 deletions
				
			
		|  | @ -1,31 +0,0 @@ | |||
| # Contributing | ||||
| 
 | ||||
| Contributions are accepted in any form (issues, documentation, feature requests, code, review, ...). | ||||
| 
 | ||||
| All creatures welcome. | ||||
| 
 | ||||
| If you have access, please contribute on the [CCCB Forgejo](https://git.berlin.ccc.de/servicepoint/servicepoint). | ||||
| Contributions on GitHub will be copied over and merged there. | ||||
| 
 | ||||
| ## Pull requests | ||||
| 
 | ||||
| Feel free to create a PR, even if your change is not done yet. | ||||
| 
 | ||||
| Mark your PR as a draft as long as you do not want it to be merged. | ||||
| 
 | ||||
| The main branch is supposed to be a working version, including language bindings, | ||||
| which means sometimes your PR may be merged into a temporary development branch. | ||||
| 
 | ||||
| Unit tests and documentation are required for the core library. | ||||
| 
 | ||||
| ## Language bindings | ||||
| 
 | ||||
| Pull requests for your preferred language will be accepted. | ||||
| If there is no code generator, it should call the C ABI methods provided by `servicepoint_binding_c`. | ||||
| It should be able to send most of the basic commands in a way the simulator accepts, receiving is | ||||
| not required for the merge. | ||||
| 
 | ||||
| It is okay for the feature set of a language binding to lag behind the one of the rust crate. | ||||
| This also means you do not have to expose a feature to all the language bindings when adding something to the core. | ||||
| 
 | ||||
| If your change may break other language bindings, please note that in your PR description so someone can check them. | ||||
|  | @ -3,12 +3,12 @@ | |||
| [](https://crates.io/crates/servicepoint) | ||||
| [](https://crates.io/crates/servicepoint) | ||||
| [](https://docs.rs/servicepoint/latest/servicepoint/) | ||||
| [](../LICENSE) | ||||
| [](./LICENSE) | ||||
| 
 | ||||
| In [CCCB](https://berlin.ccc.de/), there is a big pixel matrix hanging on the wall. | ||||
| It is called  "Service Point Display" or "Airport Display". | ||||
| 
 | ||||
| This crate contains C bindings for the `servicepoint` library, enabling users to parse, encode and send packets to this display via UDP. | ||||
| This crate contains C bindings for the [servicepoint](https://git.berlin.ccc.de/servicepoint/servicepoint) library, enabling users to parse, encode and send packets to this display via UDP. | ||||
| 
 | ||||
| ## Examples | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,41 +0,0 @@ | |||
| # About the display | ||||
| 
 | ||||
| - Resolution: 352x160=56,320 pixels | ||||
| - Pixels are grouped into 44x20=880 tiles (8x8=64 pixels each) | ||||
| - Smallest addressable unit: row of pixels inside of a tile (8 pixels = 1 byte) | ||||
| - The brightness can only be set per tile | ||||
| - Screen content can be changed using a simple UDP protocol | ||||
| - Between each row of tiles, there is a gap of around 4 pixels size. This gap changes the aspect ratio of the display. | ||||
| 
 | ||||
| ### Binary format | ||||
| 
 | ||||
| A UDP package sent to the display has a header size of 10 bytes. | ||||
| Each header value has a size of two bytes (unsigned 16 bit integer). | ||||
| Depending on the command, there can be a payload following the header. | ||||
| 
 | ||||
| To change screen contents, these commands are the most relevant: | ||||
| 
 | ||||
| 1. Clear screen | ||||
|     - command: `0x0002` | ||||
|     - (rest does not matter) | ||||
| 2. Send CP437 data: render specified text into rectangular region | ||||
|     - command: `0x0003` | ||||
|     - top left tile x | ||||
|     - top left tile y | ||||
|     - width in tiles | ||||
|     - height in tiles | ||||
|     - payload: (width in tiles * height in tiles) bytes | ||||
|         - 1 byte = 1 character | ||||
|         - each character is rendered into one tile (mono-spaced) | ||||
|         - characters are encoded using code page 437 | ||||
| 3. Send bitmap window: set pixel states for a rectangular region | ||||
|     - command: `0x0013` | ||||
|     - top left tile x | ||||
|     - top left _pixel_ y | ||||
|     - width in tiles | ||||
|     - height in _pixels_ | ||||
|     - payload: (width in tiles * height in pixels) bytes | ||||
|         - network byte order | ||||
|         - 1 bit = 1 pixel | ||||
| 
 | ||||
| There are other commands implemented as well, e.g. for changing the brightness. | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vinzenz Schroeter
						Vinzenz Schroeter