diff options
Diffstat (limited to 'include/dect/cc.h')
-rw-r--r-- | include/dect/cc.h | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/include/dect/cc.h b/include/dect/cc.h new file mode 100644 index 0000000..d5c3f65 --- /dev/null +++ b/include/dect/cc.h @@ -0,0 +1,246 @@ +/* + * DECT Call-Control (CC) NWK <-> IWU interface + * + * Copyright (c) 2009 Patrick McHardy <kaber@trash.net> + */ + +#ifndef _LIBDECT_DECT_CC_H +#define _LIBDECT_DECT_CC_H + +#include <dect/ie.h> + +/** + * struct dect_mncc_setup_param - MNCC_SETUP primitive parameters + */ +struct dect_mncc_setup_param { + struct dect_ie_basic_service *basic_service; + struct dect_ie_repeat_indicator iwu_attributes; + struct dect_ie_cipher_info *cipher_info; + struct dect_ie_repeat_indicator facility; + struct dect_ie_repeat_indicator progress_indicator; + struct dect_ie_display *display; + struct dect_ie_keypad *keypad; + struct dect_ie_signal *signal; + struct dect_ie_feature_activate *feature_activate; + struct dect_ie_feature_indicate *feature_indicate; + struct dect_ie_network_parameter *network_parameter; + struct dect_ie_terminal_capability *terminal_capability; + struct dect_ie_end_to_end_compatibility *end_to_end_compatibility; + struct dect_ie_rate_parameters *rate_parameters; + struct dect_ie_transit_delay *transit_delay; + struct dect_ie_window_size *window_size; + struct dect_ie_called_party_number *called_party_number; + struct dect_ie_called_party_subaddress *called_party_subaddress; + struct dect_ie_calling_party_number *calling_party_number; + struct dect_ie_calling_party_name *calling_party_name; + struct dect_ie_sending_complete *sending_complete; + struct dect_ie_iwu_to_iwu *iwu_to_iwu; + struct dect_ie_iwu_packet *iwu_packet; +}; + +struct dect_mncc_setup_ack_param { + struct dect_ie_info_type *info_type; + struct dect_ie_location_area *location_area; + struct dect_ie_repeat_indicator facility; + struct dect_ie_repeat_indicator progress_indicator; + struct dect_ie_display *display; + struct dect_ie_signal *signal; + struct dect_ie_feature_indicate *feature_indicate; + struct dect_ie_transit_delay *transit_delay; + struct dect_ie_window_size *window_size; + struct dect_ie_delimiter_request *delimiter_request; + struct dect_ie_repeat_indicator iwu_to_iwu; + struct dect_ie_iwu_packet *iwu_packet; +}; + +struct dect_mncc_release_param { + struct dect_ie_release_reason *release_reason; + struct dect_ie_identity_type *identity_type; + struct dect_ie_location_area *location_area; + struct dect_ie_iwu_attributes *iwu_attributes; + struct dect_ie_repeat_indicator facility; + struct dect_ie_display *display; + struct dect_ie_feature_indicate *feature_indicate; + struct dect_ie_network_parameter *network_parameter; + struct dect_ie_iwu_to_iwu *iwu_to_iwu; + struct dect_ie_iwu_packet *iwu_packet; +}; + +struct dect_mncc_call_proc_param { + struct dect_ie_repeat_indicator facility; + struct dect_ie_repeat_indicator progress_indicator; + struct dect_ie_display *display; + struct dect_ie_signal *signal; + struct dect_ie_feature_indicate *feature_indicate; + struct dect_ie_transit_delay *transit_delay; + struct dect_ie_window_size *window_size; + struct dect_ie_repeat_indicator iwu_to_iwu; + struct dect_ie_iwu_packet *iwu_packet; +}; + +struct dect_mncc_alert_param { + struct dect_ie_repeat_indicator facility; + struct dect_ie_repeat_indicator progress_indicator; + struct dect_ie_display *display; + struct dect_ie_signal *signal; + struct dect_ie_feature_indicate *feature_indicate; + struct dect_ie_terminal_capability *terminal_capability; + struct dect_ie_transit_delay *transit_delay; + struct dect_ie_window_size *window_size; + struct dect_ie_repeat_indicator iwu_to_iwu; + struct dect_ie_iwu_packet *iwu_packet; +}; + +struct dect_mncc_connect_param { + struct dect_ie_repeat_indicator facility; + struct dect_ie_repeat_indicator progress_indicator; + struct dect_ie_display *display; + struct dect_ie_signal *signal; + struct dect_ie_feature_indicate *feature_indicate; + struct dect_ie_terminal_capability *terminal_capability; + struct dect_ie_transit_delay *transit_delay; + struct dect_ie_window_size *window_size; + struct dect_ie_iwu_to_iwu *iwu_to_iwu; + struct dect_ie_iwu_packet *iwu_packet; +}; + +struct dect_mncc_facility_param { + struct dect_ie_repeat_indicator facility; + struct dect_ie_repeat_indicator progress_indicator; + struct dect_ie_display *display; + struct dect_ie_keypad *keypad; + struct dect_ie_feature_activate *feature_activate; + struct dect_ie_feature_indicate *feature_indicate; +}; + +struct dect_mncc_info_param { + struct dect_ie_location_area *location_area; + struct dect_ie_nwk_assigned_identity *nwk_assigned_identity; + struct dect_ie_repeat_indicator facility; + struct dect_ie_repeat_indicator progress_indicator; + struct dect_ie_display *display; + struct dect_ie_keypad *keypad; + struct dect_ie_signal *signal; + struct dect_ie_feature_activate *feature_activate; + struct dect_ie_feature_indicate *feature_indicate; + struct dect_ie_network_parameter *network_parameter; + struct dect_ie_called_party_number *called_party_number; + struct dect_ie_called_party_subaddress *called_party_subaddress; + struct dect_ie_calling_party_number *calling_party_number; + struct dect_ie_calling_party_name *calling_party_name; + struct dect_ie_sending_complete *sending_complete; + struct dect_ie_repeat_indicator iwu_to_iwu; + struct dect_ie_iwu_packet *iwu_packet; +}; + +struct dect_mncc_modify_param { + struct dect_ie_service_change_info *service_change_info; + struct dect_ie_repeat_indicator iwu_attributes; + struct dect_ie_repeat_indicator iwu_to_iwu; +}; + +struct dect_mncc_hold_param { + struct dect_ie_display *display; + struct dect_ie_release_reason *release_reason; +}; + +struct dect_mncc_iwu_info_param { + struct dect_ie_alphanumeric *alphanumeric; + struct dect_ie_iwu_to_iwu *iwu_to_iwu; + struct dect_ie_iwu_packet *iwu_packet; +}; + +struct dect_handle; +struct dect_call; +struct dect_msg_buf; + +extern struct dect_call *dect_call_alloc(const struct dect_handle *dh); +extern void *dect_call_priv(struct dect_call *call); + +extern const struct dect_ipui *dect_call_portable_identity(const struct dect_call *call); + +struct dect_cc_ops { + size_t priv_size; + void (*mncc_setup_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_setup_param *param); + void (*mncc_setup_ack_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_setup_ack_param *param); + void (*mncc_reject_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_release_param *param); + void (*mncc_call_proc_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_call_proc_param *param); + void (*mncc_alert_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_alert_param *param); + void (*mncc_connect_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_connect_param *param); + void (*mncc_connect_cfm)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_connect_param *param); + void (*mncc_release_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_release_param *param); + void (*mncc_release_cfm)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_release_param *param); + void (*mncc_facility_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_facility_param *param); + void (*mncc_info_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_info_param *param); + void (*mncc_modify_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_modify_param *param); + void (*mncc_modify_cfm)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_modify_param *param); + void (*mncc_hold_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_hold_param *param); + void (*mncc_hold_cfm)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_hold_param *param); + void (*mncc_retrieve_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_hold_param *param); + void (*mncc_retrieve_cfm)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_hold_param *param); + void (*mncc_iwu_info_ind)(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_iwu_info_param *param); + + void (*dl_u_data_ind)(struct dect_handle *dh, struct dect_call *call, + struct dect_msg_buf *mb); +}; + +extern int dect_mncc_setup_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_ipui *ipui, + const struct dect_mncc_setup_param *param); +extern int dect_mncc_setup_ack_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_setup_ack_param *param); +extern int dect_mncc_reject_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_release_param *param); +extern int dect_mncc_call_proc_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_call_proc_param *param); +extern int dect_mncc_alert_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_alert_param *param); +extern int dect_mncc_connect_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_connect_param *param); +extern int dect_mncc_connect_res(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_connect_param *param); +extern int dect_mncc_release_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_release_param *param); +extern int dect_mncc_release_res(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_release_param *param); +extern int dect_mncc_facility_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_facility_param *param); +extern int dect_mncc_info_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_info_param *param); +extern int dect_mncc_modify_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_modify_param *param); +extern int dect_mncc_modify_res(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_modify_param *param); +extern int dect_mncc_hold_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_hold_param *param); +extern int dect_mncc_hold_res(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_hold_param *param); +extern int dect_mncc_retrieve_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_hold_param *param); +extern int dect_mncc_retrieve_res(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_hold_param *param); +extern int dect_mncc_iwu_info_req(struct dect_handle *dh, struct dect_call *call, + const struct dect_mncc_iwu_info_param *param); + +extern int dect_dl_u_data_req(const struct dect_handle *dh, struct dect_call *call, + struct dect_msg_buf *mb); + +#endif /* _LIBDECT_DECT_CC_H */ |