mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
core: add more C interfaces for fingerprint table
These are used to read/write fingerprint records as git or XML data from C code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
02c770d997
commit
33527cb9e5
2 changed files with 61 additions and 0 deletions
|
@ -252,3 +252,54 @@ extern "C" void create_fingerprint_node(struct fingerprint_table *table, uint32_
|
||||||
table->fingerprints.insert(it, fpr);
|
table->fingerprints.insert(it, fpr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void create_fingerprint_node_from_hex(struct fingerprint_table *table, uint32_t model, uint32_t serial,
|
||||||
|
const char *hex_data, uint32_t fdeviceid, uint32_t fdiveid)
|
||||||
|
{
|
||||||
|
QByteArray raw = QByteArray::fromHex(hex_data);
|
||||||
|
create_fingerprint_node(table, model, serial,
|
||||||
|
(const unsigned char *)raw.constData(), raw.size(), fdeviceid, fdiveid);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int nr_fingerprints(struct fingerprint_table *table)
|
||||||
|
{
|
||||||
|
return table->fingerprints.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" uint32_t fp_get_model(struct fingerprint_table *table, unsigned int i)
|
||||||
|
{
|
||||||
|
if (!table || i >= table->fingerprints.size())
|
||||||
|
return 0;
|
||||||
|
return table->fingerprints[i].model;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" uint32_t fp_get_serial(struct fingerprint_table *table, unsigned int i)
|
||||||
|
{
|
||||||
|
if (!table || i >= table->fingerprints.size())
|
||||||
|
return 0;
|
||||||
|
return table->fingerprints[i].serial;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" uint32_t fp_get_deviceid(struct fingerprint_table *table, unsigned int i)
|
||||||
|
{
|
||||||
|
if (!table || i >= table->fingerprints.size())
|
||||||
|
return 0;
|
||||||
|
return table->fingerprints[i].fdeviceid;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" uint32_t fp_get_diveid(struct fingerprint_table *table, unsigned int i)
|
||||||
|
{
|
||||||
|
if (!table || i >= table->fingerprints.size())
|
||||||
|
return 0;
|
||||||
|
return table->fingerprints[i].fdiveid;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" char *fp_get_data(struct fingerprint_table *table, unsigned int i)
|
||||||
|
{
|
||||||
|
if (!table || i >= table->fingerprints.size())
|
||||||
|
return 0;
|
||||||
|
struct fingerprint_record *fpr = &table->fingerprints[i];
|
||||||
|
// fromRawData() avoids one copy of the raw_data
|
||||||
|
QByteArray hex = QByteArray::fromRawData((char *)fpr->raw_data, fpr->fsize).toHex();
|
||||||
|
return strdup(hex.constData());
|
||||||
|
}
|
||||||
|
|
|
@ -44,9 +44,19 @@ extern void free_device_table(struct device_table *devices);
|
||||||
// create fingerprint entry - raw data remains owned by caller
|
// create fingerprint entry - raw data remains owned by caller
|
||||||
extern void create_fingerprint_node(struct fingerprint_table *table, uint32_t model, uint32_t serial,
|
extern void create_fingerprint_node(struct fingerprint_table *table, uint32_t model, uint32_t serial,
|
||||||
const unsigned char *raw_data, unsigned int fsize, uint32_t fdeviceid, uint32_t fdiveid);
|
const unsigned char *raw_data, unsigned int fsize, uint32_t fdeviceid, uint32_t fdiveid);
|
||||||
|
extern void create_fingerprint_node_from_hex(struct fingerprint_table *table, uint32_t model, uint32_t serial,
|
||||||
|
const char *hex_data, uint32_t fdeviceid, uint32_t fdiveid);
|
||||||
// look up the fingerprint for model/serial - returns the number of bytes in the fingerprint; memory owned by the table
|
// look up the fingerprint for model/serial - returns the number of bytes in the fingerprint; memory owned by the table
|
||||||
extern unsigned int get_fingerprint_data(const struct fingerprint_table *table, uint32_t model, uint32_t serial, const unsigned char **fp_out);
|
extern unsigned int get_fingerprint_data(const struct fingerprint_table *table, uint32_t model, uint32_t serial, const unsigned char **fp_out);
|
||||||
|
|
||||||
|
// access the fingerprint data from C
|
||||||
|
extern int nr_fingerprints(struct fingerprint_table *table);
|
||||||
|
extern uint32_t fp_get_model(struct fingerprint_table *table, unsigned int i);
|
||||||
|
extern uint32_t fp_get_serial(struct fingerprint_table *table, unsigned int i);
|
||||||
|
extern uint32_t fp_get_deviceid(struct fingerprint_table *table, unsigned int i);
|
||||||
|
extern uint32_t fp_get_diveid(struct fingerprint_table *table, unsigned int i);
|
||||||
|
extern char *fp_get_data(struct fingerprint_table *table, unsigned int i);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue