Lines Matching refs:instance
95 static void ublox_spp_service_emit_state(ublox_spp_service_t * instance, bool enabled){ in ublox_spp_service_emit_state() argument
101 little_endian_store_16(event,pos, instance->con_handle); in ublox_spp_service_emit_state()
103 (*instance->client_packet_handler)(HCI_EVENT_PACKET, 0, event, pos); in ublox_spp_service_emit_state()
106 static int ublox_spp_service_flow_control_enabled(ublox_spp_service_t * instance){ in ublox_spp_service_flow_control_enabled() argument
107 return instance->credits_client_configuration_descriptor_value; in ublox_spp_service_flow_control_enabled()
111 ublox_spp_service_t * instance = &ublox_spp; in ublox_get_instance_for_con_handle() local
113 instance->con_handle = con_handle; in ublox_get_instance_for_con_handle()
114 return instance; in ublox_get_instance_for_con_handle()
117 static inline void ublox_spp_service_init_credits(ublox_spp_service_t * instance){ in ublox_spp_service_init_credits() argument
118 instance->incoming_credits = 0; in ublox_spp_service_init_credits()
119 instance->outgoing_credits = 0; in ublox_spp_service_init_credits()
120 instance->delta_credits = UBLOX_SPP_MAX_CREDITS; in ublox_spp_service_init_credits()
126 ublox_spp_service_t * instance = ublox_get_instance_for_con_handle(con_handle); in ublox_spp_service_read_callback() local
127 if (!instance) return 0; in ublox_spp_service_read_callback()
129 if (attribute_handle == instance->fifo_client_configuration_descriptor_handle){ in ublox_spp_service_read_callback()
131 little_endian_store_16(buffer, 0, instance->fifo_client_configuration_descriptor_value); in ublox_spp_service_read_callback()
136 if (attribute_handle == instance->credits_client_configuration_descriptor_handle){ in ublox_spp_service_read_callback()
138 … little_endian_store_16(buffer, 0, instance->credits_client_configuration_descriptor_value); in ublox_spp_service_read_callback()
153 ublox_spp_service_t * instance = ublox_get_instance_for_con_handle(con_handle); in ublox_spp_service_write_callback() local
154 if (instance == NULL){ in ublox_spp_service_write_callback()
158 if (attribute_handle == instance->fifo_value_handle){ in ublox_spp_service_write_callback()
159 …instance->client_packet_handler(RFCOMM_DATA_PACKET, (uint16_t) con_handle, &buffer[0], buffer_size… in ublox_spp_service_write_callback()
160 if (!ublox_spp_service_flow_control_enabled(instance)) return 0; in ublox_spp_service_write_callback()
161 if (!instance->incoming_credits) return 0; in ublox_spp_service_write_callback()
162 instance->incoming_credits--; in ublox_spp_service_write_callback()
163 if (instance->incoming_credits < UBLOX_SPP_CREDITS_THRESHOLD){ in ublox_spp_service_write_callback()
164 … att_server_request_to_send_notification(&instance->credits_callback, instance->con_handle); in ublox_spp_service_write_callback()
168 if (attribute_handle == instance->fifo_client_configuration_descriptor_handle){ in ublox_spp_service_write_callback()
172 instance->fifo_client_configuration_descriptor_value = little_endian_read_16(buffer, 0); in ublox_spp_service_write_callback()
173 …log_info("ublox spp service FIFO control: %d", instance->fifo_client_configuration_descriptor_valu… in ublox_spp_service_write_callback()
174 …ublox_spp_service_emit_state(instance, instance->fifo_client_configuration_descriptor_value != 0); in ublox_spp_service_write_callback()
177 if (attribute_handle == instance->credits_value_handle){ in ublox_spp_service_write_callback()
178 if (!ublox_spp_service_flow_control_enabled(instance)) return 0; in ublox_spp_service_write_callback()
181 instance->outgoing_credits += credits; in ublox_spp_service_write_callback()
182 log_info("received outgoing credits, total %d", instance->outgoing_credits); in ublox_spp_service_write_callback()
184 att_server_request_to_send_notification(&instance->credits_callback, instance->con_handle); in ublox_spp_service_write_callback()
187 if (instance->request){ in ublox_spp_service_write_callback()
188 btstack_context_callback_registration_t * request = instance->request; in ublox_spp_service_write_callback()
189 instance->request = NULL; in ublox_spp_service_write_callback()
190 att_server_request_to_send_notification(request, instance->con_handle); in ublox_spp_service_write_callback()
194 if (attribute_handle == instance->credits_client_configuration_descriptor_handle){ in ublox_spp_service_write_callback()
198 instance->credits_client_configuration_descriptor_value = little_endian_read_16(buffer, 0); in ublox_spp_service_write_callback()
199 …log_info("ublox spp service Credits control: %d", instance->credits_client_configuration_descripto… in ublox_spp_service_write_callback()
200 ublox_spp_service_init_credits(instance); in ublox_spp_service_write_callback()
207 ublox_spp_service_t * instance = (ublox_spp_service_t *) context; in ublox_spp_credits_callback() local
208 if (!instance) return; in ublox_spp_credits_callback()
210 instance->delta_credits = UBLOX_SPP_MAX_CREDITS - instance->incoming_credits; in ublox_spp_credits_callback()
211 if (instance->delta_credits){ in ublox_spp_credits_callback()
212 instance->incoming_credits = UBLOX_SPP_MAX_CREDITS; in ublox_spp_credits_callback()
213 …att_server_notify(instance->con_handle, instance->credits_value_handle, &instance->delta_credits, … in ublox_spp_credits_callback()
226 ublox_spp_service_t * instance = &ublox_spp; in ublox_spp_service_server_init() local
227 instance->client_packet_handler = packet_handler; in ublox_spp_service_server_init()
229 instance->credits_callback.callback = ublox_spp_credits_callback; in ublox_spp_service_server_init()
230 instance->credits_callback.context = instance; in ublox_spp_service_server_init()
231 ublox_spp_service_init_credits(instance); in ublox_spp_service_server_init()
243 …instance->fifo_value_handle = gatt_server_get_value_handle_for_characteristic_with_uuid128(start_h… in ublox_spp_service_server_init()
244 …instance->fifo_client_configuration_descriptor_handle = gatt_server_get_client_configuration_handl… in ublox_spp_service_server_init()
246 …instance->credits_value_handle = gatt_server_get_value_handle_for_characteristic_with_uuid128(star… in ublox_spp_service_server_init()
247 …instance->credits_client_configuration_descriptor_handle = gatt_server_get_client_configuration_ha… in ublox_spp_service_server_init()
249 log_info("FIFO value handle 0x%02x", instance->fifo_value_handle); in ublox_spp_service_server_init()
250 …log_info("FIFO CCC value handle 0x%02x", instance->fifo_client_configuration_descriptor_handle); in ublox_spp_service_server_init()
251 log_info("Credits value handle 0x%02x", instance->credits_value_handle); in ublox_spp_service_server_init()
252 …log_info("Credits CCC value handle 0x%02x", instance->credits_client_configuration_descriptor_hand… in ublox_spp_service_server_init()
268 ublox_spp_service_t * instance = &ublox_spp; in ublox_spp_service_server_request_can_send_now() local
269 if (!ublox_spp_service_flow_control_enabled(instance) || instance->outgoing_credits) { in ublox_spp_service_server_request_can_send_now()
273 instance->request = request; in ublox_spp_service_server_request_can_send_now()
283 ublox_spp_service_t * instance = &ublox_spp; in ublox_spp_service_server_send() local
284 if (ublox_spp_service_flow_control_enabled(instance)){ in ublox_spp_service_server_send()
285 if (instance->outgoing_credits > 0u){ in ublox_spp_service_server_send()
286 instance->outgoing_credits--; in ublox_spp_service_server_send()
289 return att_server_notify(con_handle, instance->fifo_value_handle, &data[0], size); in ublox_spp_service_server_send()