The custom IO handlers will be extended to not just do serial line emulation (generally over Bluetooth rfcomm), but do BLE too. BLE does not look like a serial protocol at all, it's packet-based, and we may have to add specific routines to indicate which GATT endpoints to use etc. But like the traditional custom serial code, we want to do the actual IO not from within libdivecomputer, but from the user of the library (because the BLE support will require things like the Qt Connectivity layer - and we do not want libdivecomputer to have to link against something like Qt). So this renames 'custom_serial' to 'custom_io', and instead names the individual member function pointers 'serial_*' to make it clear that those members are for serial communication. It also adds new placeholders for packet_open/close/read/write. Note that while these may look similar to the serial counter-parts, they are not the same or even necessarily mutually exclusive. It is possible the the caller fills in one or the other (or both), and they would be used independently. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
64 lines
1.7 KiB
C
64 lines
1.7 KiB
C
/*
|
|
* libdivecomputer
|
|
*
|
|
* Copyright (C) 2012 Jef Driesen
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
* MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef DC_CONTEXT_H
|
|
#define DC_CONTEXT_H
|
|
|
|
#include "common.h"
|
|
#include "custom_io.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
typedef struct dc_context_t dc_context_t;
|
|
|
|
typedef enum dc_loglevel_t {
|
|
DC_LOGLEVEL_NONE,
|
|
DC_LOGLEVEL_ERROR,
|
|
DC_LOGLEVEL_WARNING,
|
|
DC_LOGLEVEL_INFO,
|
|
DC_LOGLEVEL_DEBUG,
|
|
DC_LOGLEVEL_ALL
|
|
} dc_loglevel_t;
|
|
|
|
typedef void (*dc_logfunc_t) (dc_context_t *context, dc_loglevel_t loglevel, const char *file, unsigned int line, const char *function, const char *message, void *userdata);
|
|
|
|
dc_status_t
|
|
dc_context_new (dc_context_t **context);
|
|
|
|
dc_status_t
|
|
dc_context_free (dc_context_t *context);
|
|
|
|
dc_status_t
|
|
dc_context_set_custom_io (dc_context_t *context, dc_custom_io_t *custom_io);
|
|
|
|
dc_status_t
|
|
dc_context_set_loglevel (dc_context_t *context, dc_loglevel_t loglevel);
|
|
|
|
dc_status_t
|
|
dc_context_set_logfunc (dc_context_t *context, dc_logfunc_t logfunc, void *userdata);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
#endif /* DC_CONTEXT_H */
|