Add HACKING file.
This commit is contained in:
parent
d6aaeec866
commit
72ebd3af5a
1 changed files with 53 additions and 0 deletions
53
HACKING
Normal file
53
HACKING
Normal file
|
@ -0,0 +1,53 @@
|
|||
Hello hackers!
|
||||
|
||||
General remarks about contributing
|
||||
----------------------------------
|
||||
|
||||
Contributions to the libfreefare are welcome! Here are some directions to get
|
||||
you started:
|
||||
|
||||
1. Install Cutter
|
||||
Cutter is a cool unit test framework for C code. You will need it to run
|
||||
the regression tests suite (`make check') and ensure that your code does
|
||||
not break other features.
|
||||
http://cutter.sourceforge.net/
|
||||
|
||||
2. Follow style conventions
|
||||
The source code of the library trend to follow some conventions so that it
|
||||
is consistent in style and thus easier to read. Basically, it follows
|
||||
FreeBSD's style(9); adding 4-space indentation and 8-space tabs (which you
|
||||
should configure in your editor, e.g. `:set sw=4 ts=8' in vim). For more
|
||||
details, please read the style(9) man page from FreeBSD's website:
|
||||
http://www.freebsd.org/cgi/man.cgi?query=style
|
||||
|
||||
3. Write tests
|
||||
I told you cutter is lovely in #1 so you really should use it! If you
|
||||
want to contribute code, write test: only code with appropriate tests will
|
||||
be considered. And remember that TDD (Test Driven Development) is cool
|
||||
and writing all tests at the end deeply depressing, so test early, test
|
||||
often!
|
||||
|
||||
|
||||
Adding support for a new type of card
|
||||
-------------------------------------
|
||||
|
||||
Adding a new supported card to the libfreefare requires a few modification in
|
||||
multiple places. Here is a list of the things to do in order to have the
|
||||
infrastructure ready for hacking the new card support:
|
||||
- Edit libfreefare/freefare.h:
|
||||
- Add your tag to the `mifare_tag_type' enum;
|
||||
- Add a <tag>_connect() and a <tag>_disconnect() function prototype;
|
||||
- Edit libfreefare/freefare_internal.h:
|
||||
- Add a new <tag>_tag struct. It's very first member shall be `struct
|
||||
mifare_tag __tag';
|
||||
- Add a <tag>_tag_new() and a <tag>_tag_free() function prototype;
|
||||
- Add a ASSERT_<TAG>() macro to check the tag's type;
|
||||
- Add a <TAG>() macro to cast a generic tag to your type.
|
||||
- Edit libfreefare/freefare.c:
|
||||
- Add your tag type to the supported_tags array;
|
||||
- Edit the freefare_get_tags() function so that it calls <tag>_tag_new()
|
||||
when it finds your tag;
|
||||
- Edit the freefare_free_tags() function so that it calls
|
||||
<tag>_tag_free() to free your tags;
|
||||
- Create libfreefare/<tag>.c and implement all that's missing ;-)
|
||||
|
Loading…
Add table
Reference in a new issue