]> cvs.zerfleddert.de Git - proxmark3-svn/blame - client/hidcardformatutils.h
Merge branch 'master' into master
[proxmark3-svn] / client / hidcardformatutils.h
CommitLineData
b5a5fc4d 1//-----------------------------------------------------------------------------
2// Copyright (C) 2018 grauerfuchs
3//
4// This code is licensed to you under the terms of the GNU GPL, version 2 or,
5// at your option, any later version. See the LICENSE.txt file for the text of
6// the license.
7//-----------------------------------------------------------------------------
8// HID card format packing/unpacking support functions
9//-----------------------------------------------------------------------------
10
11#ifndef HIDCARDFORMATUTILS_H__
12#define HIDCARDFORMATUTILS_H__
13
14#include <stdarg.h>
15#include <stdint.h>
16#include <stdbool.h>
17
18// Structure for packed HID messages
19// Always align lowest value (last transmitted) bit to ordinal position 0 (lowest valued bit bottom)
20typedef struct hidproxmessage_s{
21 uint8_t Length; // Number of encoded bits in prox message (excluding headers and preamble)
22 uint32_t top; // Bits in x<<64 positions
23 uint32_t mid; // Bits in x<<32 positions
24 uint32_t bot; // Lowest ordinal positions
25} hidproxmessage_t;
26
27// Structure for unpacked HID prox cards
28typedef struct hidproxcard_s{
29 uint32_t FacilityCode;
30 uint64_t CardNumber;
be59094d 31 uint32_t IssueLevel;
32 uint32_t OEM;
b5a5fc4d 33 bool ParityValid; // Only valid for responses
34} hidproxcard_t;
35
36bool get_bit_by_position(/* in */hidproxmessage_t* data, /* in */uint8_t pos);
37bool set_bit_by_position(/* inout */hidproxmessage_t* data, /* in */bool value, /* in */uint8_t pos);
38
39uint64_t get_linear_field(/* in */hidproxmessage_t* data, /* in */uint8_t firstBit, /* in */uint8_t length);
40bool set_linear_field(/* inout */hidproxmessage_t* data, /* in */uint64_t value, /* in */uint8_t firstBit, /* in */uint8_t length);
41
42uint64_t get_nonlinear_field(/* in */hidproxmessage_t* data, /* in */uint8_t numBits, /* in */uint8_t* bits);
43bool set_nonlinear_field(/* inout */hidproxmessage_t* data, /* in */uint64_t value, /* in */uint8_t numBits, /* in */uint8_t* bits);
44
45hidproxmessage_t initialize_proxmessage_object(/* in */uint32_t top, /* in */uint32_t mid, /* in */uint32_t bot);
46bool add_HID_header(/* inout */hidproxmessage_t* data);
47#endif
Impressum, Datenschutz