mbed-os5 only for TYBLE16
Dependents: TYBLE16_simple_data_logger TYBLE16_MP3_Air
features/netsocket/PPP.h@1:9db0e321a9f4, 2019-12-31 (annotated)
- Committer:
- kenjiArai
- Date:
- Tue Dec 31 06:02:27 2019 +0000
- Revision:
- 1:9db0e321a9f4
updated based on mbed-os5.15.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 1:9db0e321a9f4 | 1 | /* |
kenjiArai | 1:9db0e321a9f4 | 2 | * Copyright (c) 2019 ARM Limited |
kenjiArai | 1:9db0e321a9f4 | 3 | * SPDX-License-Identifier: Apache-2.0 |
kenjiArai | 1:9db0e321a9f4 | 4 | * |
kenjiArai | 1:9db0e321a9f4 | 5 | * Licensed under the Apache License, Version 2.0 (the "License"); |
kenjiArai | 1:9db0e321a9f4 | 6 | * you may not use this file except in compliance with the License. |
kenjiArai | 1:9db0e321a9f4 | 7 | * You may obtain a copy of the License at |
kenjiArai | 1:9db0e321a9f4 | 8 | * |
kenjiArai | 1:9db0e321a9f4 | 9 | * http://www.apache.org/licenses/LICENSE-2.0 |
kenjiArai | 1:9db0e321a9f4 | 10 | * |
kenjiArai | 1:9db0e321a9f4 | 11 | * Unless required by applicable law or agreed to in writing, software |
kenjiArai | 1:9db0e321a9f4 | 12 | * distributed under the License is distributed on an "AS IS" BASIS, |
kenjiArai | 1:9db0e321a9f4 | 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
kenjiArai | 1:9db0e321a9f4 | 14 | * See the License for the specific language governing permissions and |
kenjiArai | 1:9db0e321a9f4 | 15 | * limitations under the License. |
kenjiArai | 1:9db0e321a9f4 | 16 | */ |
kenjiArai | 1:9db0e321a9f4 | 17 | |
kenjiArai | 1:9db0e321a9f4 | 18 | #ifndef PPP_H_ |
kenjiArai | 1:9db0e321a9f4 | 19 | #define PPP_H_ |
kenjiArai | 1:9db0e321a9f4 | 20 | |
kenjiArai | 1:9db0e321a9f4 | 21 | #include <stdbool.h> |
kenjiArai | 1:9db0e321a9f4 | 22 | #include "Callback.h" |
kenjiArai | 1:9db0e321a9f4 | 23 | #include "FileHandle.h" |
kenjiArai | 1:9db0e321a9f4 | 24 | #include "NetStackMemoryManager.h" |
kenjiArai | 1:9db0e321a9f4 | 25 | |
kenjiArai | 1:9db0e321a9f4 | 26 | class PPP { |
kenjiArai | 1:9db0e321a9f4 | 27 | public: |
kenjiArai | 1:9db0e321a9f4 | 28 | |
kenjiArai | 1:9db0e321a9f4 | 29 | /** Return the default on-board PPP |
kenjiArai | 1:9db0e321a9f4 | 30 | * |
kenjiArai | 1:9db0e321a9f4 | 31 | * Returns the default on-board PPP - this will be target-specific, and |
kenjiArai | 1:9db0e321a9f4 | 32 | * may not be available on all targets. |
kenjiArai | 1:9db0e321a9f4 | 33 | */ |
kenjiArai | 1:9db0e321a9f4 | 34 | static PPP &get_default_instance(); |
kenjiArai | 1:9db0e321a9f4 | 35 | |
kenjiArai | 1:9db0e321a9f4 | 36 | virtual ~PPP() {}; |
kenjiArai | 1:9db0e321a9f4 | 37 | |
kenjiArai | 1:9db0e321a9f4 | 38 | /** |
kenjiArai | 1:9db0e321a9f4 | 39 | * Callback to be registered with PPP interface and to be called for received packets |
kenjiArai | 1:9db0e321a9f4 | 40 | * |
kenjiArai | 1:9db0e321a9f4 | 41 | * @param buf Received data |
kenjiArai | 1:9db0e321a9f4 | 42 | */ |
kenjiArai | 1:9db0e321a9f4 | 43 | //typedef void (*ppp_link_input_fn)(void *data, net_stack_mem_buf_t *buf); |
kenjiArai | 1:9db0e321a9f4 | 44 | typedef mbed::Callback<void (net_stack_mem_buf_t *buf)> ppp_link_input_cb_t; |
kenjiArai | 1:9db0e321a9f4 | 45 | |
kenjiArai | 1:9db0e321a9f4 | 46 | /** |
kenjiArai | 1:9db0e321a9f4 | 47 | * Callback to be registered with PPP interface and to be called for link status changes |
kenjiArai | 1:9db0e321a9f4 | 48 | * |
kenjiArai | 1:9db0e321a9f4 | 49 | * @param up Link status |
kenjiArai | 1:9db0e321a9f4 | 50 | */ |
kenjiArai | 1:9db0e321a9f4 | 51 | //typedef void (*ppp_link_state_change_fn)(void *data, bool up); |
kenjiArai | 1:9db0e321a9f4 | 52 | typedef mbed::Callback<void (bool up)> ppp_link_state_change_cb_t; |
kenjiArai | 1:9db0e321a9f4 | 53 | |
kenjiArai | 1:9db0e321a9f4 | 54 | /** |
kenjiArai | 1:9db0e321a9f4 | 55 | * Return maximum transmission unit |
kenjiArai | 1:9db0e321a9f4 | 56 | * |
kenjiArai | 1:9db0e321a9f4 | 57 | * @return MTU in bytes |
kenjiArai | 1:9db0e321a9f4 | 58 | */ |
kenjiArai | 1:9db0e321a9f4 | 59 | virtual uint32_t get_mtu_size() = 0; |
kenjiArai | 1:9db0e321a9f4 | 60 | |
kenjiArai | 1:9db0e321a9f4 | 61 | /** |
kenjiArai | 1:9db0e321a9f4 | 62 | * Gets memory buffer alignment preference |
kenjiArai | 1:9db0e321a9f4 | 63 | * |
kenjiArai | 1:9db0e321a9f4 | 64 | * Gets preferred memory buffer alignment of the cellular device. |
kenjiArai | 1:9db0e321a9f4 | 65 | * @return Memory alignment requirement in bytes |
kenjiArai | 1:9db0e321a9f4 | 66 | */ |
kenjiArai | 1:9db0e321a9f4 | 67 | virtual uint32_t get_align_preference() const = 0; |
kenjiArai | 1:9db0e321a9f4 | 68 | |
kenjiArai | 1:9db0e321a9f4 | 69 | /** |
kenjiArai | 1:9db0e321a9f4 | 70 | * Return interface name |
kenjiArai | 1:9db0e321a9f4 | 71 | * |
kenjiArai | 1:9db0e321a9f4 | 72 | * @param name Pointer to where the name should be written |
kenjiArai | 1:9db0e321a9f4 | 73 | * @param size Maximum number of characters to copy |
kenjiArai | 1:9db0e321a9f4 | 74 | */ |
kenjiArai | 1:9db0e321a9f4 | 75 | virtual void get_ifname(char *name, uint8_t size) const = 0; |
kenjiArai | 1:9db0e321a9f4 | 76 | |
kenjiArai | 1:9db0e321a9f4 | 77 | /** |
kenjiArai | 1:9db0e321a9f4 | 78 | * Sends the packet over the link |
kenjiArai | 1:9db0e321a9f4 | 79 | * |
kenjiArai | 1:9db0e321a9f4 | 80 | * That cannot be called from an interrupt context. |
kenjiArai | 1:9db0e321a9f4 | 81 | * |
kenjiArai | 1:9db0e321a9f4 | 82 | * @param buf Packet to be sent |
kenjiArai | 1:9db0e321a9f4 | 83 | * @return True if the packet was sent, false otherwise |
kenjiArai | 1:9db0e321a9f4 | 84 | */ |
kenjiArai | 1:9db0e321a9f4 | 85 | virtual bool link_out(net_stack_mem_buf_t *buf, nsapi_ip_stack_t ip_stack) = 0; |
kenjiArai | 1:9db0e321a9f4 | 86 | |
kenjiArai | 1:9db0e321a9f4 | 87 | /** |
kenjiArai | 1:9db0e321a9f4 | 88 | * Initializes the PPP |
kenjiArai | 1:9db0e321a9f4 | 89 | * |
kenjiArai | 1:9db0e321a9f4 | 90 | * @return True on success, False in case of an error. |
kenjiArai | 1:9db0e321a9f4 | 91 | */ |
kenjiArai | 1:9db0e321a9f4 | 92 | virtual bool power_up() = 0; |
kenjiArai | 1:9db0e321a9f4 | 93 | |
kenjiArai | 1:9db0e321a9f4 | 94 | /** |
kenjiArai | 1:9db0e321a9f4 | 95 | * Deinitializes the PPP |
kenjiArai | 1:9db0e321a9f4 | 96 | * |
kenjiArai | 1:9db0e321a9f4 | 97 | */ |
kenjiArai | 1:9db0e321a9f4 | 98 | virtual void power_down() = 0; |
kenjiArai | 1:9db0e321a9f4 | 99 | |
kenjiArai | 1:9db0e321a9f4 | 100 | /** |
kenjiArai | 1:9db0e321a9f4 | 101 | * Sets a callback that needs to be called for packets received for that interface |
kenjiArai | 1:9db0e321a9f4 | 102 | * |
kenjiArai | 1:9db0e321a9f4 | 103 | * @param input_cb Function to be register as a callback |
kenjiArai | 1:9db0e321a9f4 | 104 | */ |
kenjiArai | 1:9db0e321a9f4 | 105 | virtual void set_link_input_cb(ppp_link_input_cb_t input_cb) = 0; |
kenjiArai | 1:9db0e321a9f4 | 106 | |
kenjiArai | 1:9db0e321a9f4 | 107 | /** |
kenjiArai | 1:9db0e321a9f4 | 108 | * Sets a callback that needs to be called on link status changes for given interface |
kenjiArai | 1:9db0e321a9f4 | 109 | * |
kenjiArai | 1:9db0e321a9f4 | 110 | * @param state_cb Function to be register as a callback |
kenjiArai | 1:9db0e321a9f4 | 111 | */ |
kenjiArai | 1:9db0e321a9f4 | 112 | virtual void set_link_state_cb(ppp_link_state_change_cb_t state_cb) = 0; |
kenjiArai | 1:9db0e321a9f4 | 113 | |
kenjiArai | 1:9db0e321a9f4 | 114 | /** Sets memory manager that is used to handle memory buffers |
kenjiArai | 1:9db0e321a9f4 | 115 | * |
kenjiArai | 1:9db0e321a9f4 | 116 | * @param mem_mngr Pointer to memory manager |
kenjiArai | 1:9db0e321a9f4 | 117 | */ |
kenjiArai | 1:9db0e321a9f4 | 118 | virtual void set_memory_manager(NetStackMemoryManager &mem_mngr) = 0; |
kenjiArai | 1:9db0e321a9f4 | 119 | |
kenjiArai | 1:9db0e321a9f4 | 120 | /** Sets file stream used to communicate with modem |
kenjiArai | 1:9db0e321a9f4 | 121 | * |
kenjiArai | 1:9db0e321a9f4 | 122 | * @param stream Pointer to file handle |
kenjiArai | 1:9db0e321a9f4 | 123 | */ |
kenjiArai | 1:9db0e321a9f4 | 124 | virtual void set_stream(mbed::FileHandle *stream) = 0; |
kenjiArai | 1:9db0e321a9f4 | 125 | |
kenjiArai | 1:9db0e321a9f4 | 126 | /** Sets IP protocol versions of IP stack |
kenjiArai | 1:9db0e321a9f4 | 127 | * |
kenjiArai | 1:9db0e321a9f4 | 128 | * @param ip_stack IP protocol version |
kenjiArai | 1:9db0e321a9f4 | 129 | */ |
kenjiArai | 1:9db0e321a9f4 | 130 | virtual void set_ip_stack(nsapi_ip_stack_t ip_stack) = 0; |
kenjiArai | 1:9db0e321a9f4 | 131 | |
kenjiArai | 1:9db0e321a9f4 | 132 | /** Sets user name and password for PPP protocol |
kenjiArai | 1:9db0e321a9f4 | 133 | * |
kenjiArai | 1:9db0e321a9f4 | 134 | * @param uname User name |
kenjiArai | 1:9db0e321a9f4 | 135 | * @param password Password |
kenjiArai | 1:9db0e321a9f4 | 136 | */ |
kenjiArai | 1:9db0e321a9f4 | 137 | virtual void set_credentials(const char *uname, const char *password) = 0; |
kenjiArai | 1:9db0e321a9f4 | 138 | |
kenjiArai | 1:9db0e321a9f4 | 139 | /** Gets local IP address |
kenjiArai | 1:9db0e321a9f4 | 140 | * |
kenjiArai | 1:9db0e321a9f4 | 141 | * @param version IP address version |
kenjiArai | 1:9db0e321a9f4 | 142 | * @return IP address |
kenjiArai | 1:9db0e321a9f4 | 143 | */ |
kenjiArai | 1:9db0e321a9f4 | 144 | virtual const nsapi_addr_t *get_ip_address(nsapi_version_t version) = 0; |
kenjiArai | 1:9db0e321a9f4 | 145 | |
kenjiArai | 1:9db0e321a9f4 | 146 | /** Get the local network mask. |
kenjiArai | 1:9db0e321a9f4 | 147 | * |
kenjiArai | 1:9db0e321a9f4 | 148 | * @return Local network mask or null if no network mask has been received. |
kenjiArai | 1:9db0e321a9f4 | 149 | */ |
kenjiArai | 1:9db0e321a9f4 | 150 | virtual const nsapi_addr_t *get_netmask() = 0; |
kenjiArai | 1:9db0e321a9f4 | 151 | |
kenjiArai | 1:9db0e321a9f4 | 152 | /** Get the local gateway. |
kenjiArai | 1:9db0e321a9f4 | 153 | * |
kenjiArai | 1:9db0e321a9f4 | 154 | * @return Local gateway or null if no network mask has been received. |
kenjiArai | 1:9db0e321a9f4 | 155 | */ |
kenjiArai | 1:9db0e321a9f4 | 156 | virtual const nsapi_addr_t *get_gateway() = 0; |
kenjiArai | 1:9db0e321a9f4 | 157 | |
kenjiArai | 1:9db0e321a9f4 | 158 | /** Gets DNS server address |
kenjiArai | 1:9db0e321a9f4 | 159 | * |
kenjiArai | 1:9db0e321a9f4 | 160 | * @param index Server index |
kenjiArai | 1:9db0e321a9f4 | 161 | */ |
kenjiArai | 1:9db0e321a9f4 | 162 | virtual const nsapi_addr_t *get_dns_server(uint8_t index) = 0; |
kenjiArai | 1:9db0e321a9f4 | 163 | }; |
kenjiArai | 1:9db0e321a9f4 | 164 | |
kenjiArai | 1:9db0e321a9f4 | 165 | #endif /* PPP_H_ */ |