| /* |
| // Copyright (c) 2016 Intel Corporation |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| */ |
| |
| #ifndef OC_API_H |
| #define OC_API_H |
| |
| #include "oic/port/mynewt/config.h" |
| #include "oic/oc_ri.h" |
| #include "oic/oc_ri_const.h" |
| #include "oic/oc_api.h" |
| #include "oic/port/oc_storage.h" |
| #include "oic/messaging/coap/coap.h" |
| #include "oic/messaging/coap/separate.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef struct |
| { |
| void (*init)(void); |
| |
| #ifdef OC_SECURITY |
| void (*get_credentials)(void); |
| #endif /* OC_SECURITY */ |
| |
| #ifdef OC_SERVER |
| void (*register_resources)(void); |
| #endif /* OC_SERVER */ |
| |
| #ifdef OC_CLIENT |
| void (*requests_entry)(void); |
| #endif /* OC_CLIENT */ |
| } oc_handler_t; |
| |
| typedef void (*oc_init_platform_cb_t)(void *data); |
| typedef void (*oc_add_device_cb_t)(void *data); |
| |
| int oc_main_init(oc_handler_t *handler); |
| |
| oc_clock_time_t oc_main_poll(void); |
| |
| void oc_main_shutdown(void); |
| |
| void oc_add_device(const char *uri, const char *rt, const char *name, |
| const char *spec_version, const char *data_model_version, |
| oc_add_device_cb_t add_device_cb, void *data); |
| |
| #define oc_set_custom_device_property(prop, value) \ |
| oc_rep_set_text_string(root, prop, value) |
| |
| void oc_init_platform(const char *mfg_name, |
| oc_init_platform_cb_t init_platform_cb, void *data); |
| |
| #define oc_set_custom_platform_property(prop, value) \ |
| oc_rep_set_text_string(root, prop, value) |
| |
| /** Server side */ |
| oc_resource_t *oc_new_resource(const char *uri, uint8_t num_resource_types, |
| int device); |
| void oc_resource_bind_resource_interface(oc_resource_t *resource, |
| uint8_t interface); |
| void oc_resource_set_default_interface(oc_resource_t *resource, |
| oc_interface_mask_t interface); |
| void oc_resource_bind_resource_type(oc_resource_t *resource, const char *type); |
| |
| void oc_process_baseline_interface(oc_resource_t *resource); |
| |
| #ifdef OC_SECURITY |
| void oc_resource_make_secure(oc_resource_t *resource); |
| #endif /* OC_SECURITY */ |
| #if MYNEWT_VAL(OC_TRANS_SECURITY) |
| void oc_resource_set_trans_security(oc_resource_t *resource, |
| bool enc, bool auth); |
| #endif |
| |
| void oc_resource_set_discoverable(oc_resource_t *resource); |
| void oc_resource_set_observable(oc_resource_t *resource); |
| void oc_resource_set_periodic_observable(oc_resource_t *resource, |
| uint16_t seconds); |
| void oc_resource_set_periodic_observable_ms(oc_resource_t *resource, |
| uint32_t mseconds); |
| void oc_resource_set_request_handler(oc_resource_t *resource, |
| oc_method_t method, |
| oc_request_handler_t handler); |
| bool oc_add_resource(oc_resource_t *resource); |
| void oc_delete_resource(oc_resource_t *resource); |
| void oc_deactivate_resource(oc_resource_t *resource); |
| |
| void oc_init_query_iterator(oc_request_t *request); |
| int oc_interate_query(oc_request_t *request, char **key, int *key_len, |
| char **value, int *value_len); |
| int oc_get_query_value(oc_request_t *request, const char *key, char **value); |
| |
| void oc_send_response(oc_request_t *request, oc_status_t response_code); |
| void oc_ignore_request(oc_request_t *request); |
| |
| #if MYNEWT_VAL(OC_SEPARATE_RESPONSES) |
| void oc_indicate_separate_response(oc_request_t *request, |
| oc_separate_response_t *response); |
| void oc_set_separate_response_buffer(oc_separate_response_t *handle); |
| void oc_send_separate_response(oc_separate_response_t *handle, |
| oc_status_t response_code); |
| #endif |
| |
| int oc_notify_observers(oc_resource_t *resource); |
| |
| #ifdef OC_CLIENT |
| /** Client side */ |
| #include "oc_client_state.h" |
| |
| #if MYNEWT_VAL(OC_CLIENT_DISCOVERY_ENABLE) |
| bool oc_do_ip_discovery(const char *rt, oc_discovery_cb_t handler); |
| #endif |
| |
| bool oc_do_get(const char *uri, oc_server_handle_t *server, const char *query, |
| oc_response_handler_t handler, oc_qos_t qos); |
| |
| bool oc_do_delete(const char *uri, oc_server_handle_t *server, |
| oc_response_handler_t handler, oc_qos_t qos); |
| |
| bool oc_init_put(const char *uri, oc_server_handle_t *server, const char *query, |
| oc_response_handler_t handler, oc_qos_t qos); |
| |
| bool oc_do_put(void); |
| |
| bool oc_init_post(const char *uri, oc_server_handle_t *server, |
| const char *query, oc_response_handler_t handler, |
| oc_qos_t qos); |
| |
| bool oc_do_post(void); |
| |
| bool oc_do_observe(const char *uri, oc_server_handle_t *server, |
| const char *query, oc_response_handler_t handler, |
| oc_qos_t qos); |
| |
| bool oc_stop_observe(const char *uri, oc_server_handle_t *server); |
| #endif |
| |
| struct os_eventq; |
| void oc_evq_set(struct os_eventq *evq); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* OC_API_H */ |