1 /*!
2  * \file        sccp_config.h
3  * \brief       SCCP Config Header
4  * \author      Marcello Ceschia <marcelloceschia [at] users.sourceforge.net>
5  * \note        Reworked, but based on chan_sccp code.
6  *              The original chan_sccp driver that was made by Zozo which itself was derived from the chan_skinny driver.
7  *              Modified by Jan Czmok and Julien Goodwin
8  * \note        This program is free software and may be modified and distributed under the terms of the GNU Public License.
9  *              See the LICENSE file at the top of the source tree.
10  */
11 #pragma once
12 
13 __BEGIN_C_EXTERN__
14 // sccp_buttonconfig_list_t externally declared in sccp_device.h, required by sccp_config_addButton
15 extern struct sccp_buttonconfig_list sccp_buttonconfig_list;
16 
17 /*!
18  * \brief Enum for Config Value Change Status
19  */
20 typedef enum {
21 	SCCP_CONFIG_CHANGE_NOCHANGE,
22 	SCCP_CONFIG_CHANGE_CHANGED,
23 	SCCP_CONFIG_CHANGE_INVALIDVALUE,
24 	SCCP_CONFIG_CHANGE_ERROR,
25 } sccp_value_changed_t;
26 
27 /*!
28  * \brief Enum for Config Option Blocks
29  */
30 typedef enum {
31 	SCCP_CONFIG_GLOBAL_SEGMENT,
32 	SCCP_CONFIG_DEVICE_SEGMENT,
33 	SCCP_CONFIG_LINE_SEGMENT,
34 	SCCP_CONFIG_SOFTKEY_SEGMENT,
35 } sccp_config_segment_t;
36 
37 // SCCP_API void SCCP_CALL sccp_copy_defaultValue(const char *name, void *obj, const sccp_device_t * device, const sccp_config_segment_t segment);
38 SCCP_API int SCCP_CALL sccp_manager_config_metadata(struct mansession *s, const struct message *m);
39 SCCP_API void SCCP_CALL sccp_config_cleanup_dynamically_allocated_memory(void *obj, const sccp_config_segment_t segment);
40 SCCP_API sccp_value_changed_t SCCP_CALL sccp_config_addButton(sccp_buttonconfig_list_t *buttonconfigList, int buttonindex, sccp_config_buttontype_t type, const char *name, const char *options, const char *args);
41 SCCP_API boolean_t SCCP_CALL sccp_config_general(sccp_readingtype_t readingtype);
42 SCCP_API void SCCP_CALL cleanup_stale_contexts(char *new_context, char *old_context);
43 SCCP_API boolean_t SCCP_CALL sccp_config_readDevicesLines(sccp_readingtype_t readingtype);
44 
45 /*!
46  * \brief Enum for Config File Status (Return Values)
47  */
48 typedef enum {
49 	/* *INDENT-OFF* */
50 	CONFIG_STATUS_FILE_NOT_CHANGED 	= -1,
51 	CONFIG_STATUS_FILE_OK 		= 0,
52 	CONFIG_STATUS_FILE_OLD 		= 1,
53 	CONFIG_STATUS_FILE_NOT_SCCP 	= 2,
54 	CONFIG_STATUS_FILE_NOT_FOUND 	= 3,
55 	CONFIG_STATUS_FILE_INVALID 	= 5,
56 	/* *INDENT-ON* */
57 } sccp_config_file_status_t;
58 
59 SCCP_API sccp_config_file_status_t SCCP_CALL sccp_config_getConfig(boolean_t force, const char * const filename);
60 SCCP_API sccp_configurationchange_t SCCP_CALL sccp_config_applyGlobalConfiguration(PBX_VARIABLE_TYPE * v);
61 SCCP_API sccp_configurationchange_t SCCP_CALL sccp_config_applyLineConfiguration(linePtr l, PBX_VARIABLE_TYPE * v);
62 SCCP_API sccp_configurationchange_t SCCP_CALL sccp_config_applyDeviceConfiguration(devicePtr d, PBX_VARIABLE_TYPE * v);
63 // SCCP_API sccp_configurationchange_t SCCP_CALL sccp_config_applyDeviceDefaults(sccp_device_t * device, PBX_VARIABLE_TYPE * variable);
64 
65 SCCP_API void SCCP_CALL sccp_config_softKeySet(PBX_VARIABLE_TYPE * variable, const char *name);
66 SCCP_API void SCCP_CALL sccp_config_restoreDeviceFeatureStatus(devicePtr device);
67 
68 SCCP_API int SCCP_CALL sccp_config_generate(char *filename, int configType);
69 __END_C_EXTERN__
70 // kate: indent-width 8; replace-tabs off; indent-mode cstyle; auto-insert-doxygen on; line-numbers on; tab-indents on; keep-extra-spaces off; auto-brackets off;
71