diff options
author | Dario Nieuwenhuis <dirbaio@dirbaio.net> | 2020-11-09 23:49:07 +0100 |
---|---|---|
committer | Dario Nieuwenhuis <dirbaio@dirbaio.net> | 2020-11-09 23:49:07 +0100 |
commit | 140bb3946d39aaacc6c0503557ab81c5e0ded85f (patch) | |
tree | 9a8cc849da310764fdfe4fda5c6d423b32c1aa5a /nrf-softdevice-macro | |
parent | 79287df811a74ea97b5a7f45e4598fd892c9caea (diff) | |
download | nrf-softdevice-140bb3946d39aaacc6c0503557ab81c5e0ded85f.zip |
gatt_server: fix macro breaking if missing imports.
Diffstat (limited to 'nrf-softdevice-macro')
-rw-r--r-- | nrf-softdevice-macro/src/lib.rs | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/nrf-softdevice-macro/src/lib.rs b/nrf-softdevice-macro/src/lib.rs index b98bde4..46c36c7 100644 --- a/nrf-softdevice-macro/src/lib.rs +++ b/nrf-softdevice-macro/src/lib.rs @@ -113,6 +113,8 @@ pub fn gatt_server(args: TokenStream, item: TokenStream) -> TokenStream { let mut code_on_write = TokenStream2::new(); let mut code_event_enum = TokenStream2::new(); + let ble = quote!(::nrf_softdevice::ble); + for ch in &chars { let name_pascal = inflector::cases::pascalcase::to_pascal_case(&ch.name); let char_name = format_ident!("{}", ch.name); @@ -128,7 +130,7 @@ pub fn gatt_server(args: TokenStream, item: TokenStream) -> TokenStream { let notify = ch.args.notify; let indicate = ch.args.indicate; let ty = &ch.ty; - let ty_as_val = quote!(<#ty as ::nrf_softdevice::ble::GattValue>); + let ty_as_val = quote!(<#ty as #ble::GattValue>); fields.push(syn::Field { ident: Some(value_handle.clone()), @@ -140,7 +142,7 @@ pub fn gatt_server(args: TokenStream, item: TokenStream) -> TokenStream { code_register_chars.extend(quote_spanned!(ch.span=> let #char_name = register_char( - Characteristic { + #ble::gatt_server::Characteristic { uuid: #uuid, can_read: #read, can_write: #write, @@ -157,17 +159,17 @@ pub fn gatt_server(args: TokenStream, item: TokenStream) -> TokenStream { )); code_impl.extend(quote_spanned!(ch.span=> - fn #get_fn(&self) -> Result<#ty, gatt_server::GetValueError> { + fn #get_fn(&self) -> Result<#ty, #ble::gatt_server::GetValueError> { let sd = unsafe { ::nrf_softdevice::Softdevice::steal() }; let buf = &mut [0u8; #ty_as_val::MAX_SIZE]; - let size = gatt_server::get_value(sd, self.#value_handle, buf)?; + let size = #ble::gatt_server::get_value(sd, self.#value_handle, buf)?; Ok(#ty_as_val::from_gatt(&buf[..size])) } - fn #set_fn(&self, val: #ty) -> Result<(), gatt_server::SetValueError> { + fn #set_fn(&self, val: #ty) -> Result<(), #ble::gatt_server::SetValueError> { let sd = unsafe { ::nrf_softdevice::Softdevice::steal() }; let buf = #ty_as_val::to_gatt(&val); - gatt_server::set_value(sd, self.#value_handle, buf) + #ble::gatt_server::set_value(sd, self.#value_handle, buf) } )); @@ -204,9 +206,9 @@ pub fn gatt_server(args: TokenStream, item: TokenStream) -> TokenStream { &self, conn: &Connection, val: #ty, - ) -> Result<(), gatt_server::NotifyValueError> { + ) -> Result<(), #ble::gatt_server::NotifyValueError> { let buf = #ty_as_val::to_gatt(&val); - gatt_server::notify_value(conn, self.#value_handle, buf) + #ble::gatt_server::notify_value(conn, self.#value_handle, buf) } )); @@ -236,16 +238,16 @@ pub fn gatt_server(args: TokenStream, item: TokenStream) -> TokenStream { #code_impl } - impl ::nrf_softdevice::ble::gatt_server::Server for #struct_name { + impl #ble::gatt_server::Server for #struct_name { type Event = #event_enum_name; - fn uuid() -> Uuid { + fn uuid() -> #ble::Uuid { #uuid } - fn register<F>(service_handle: u16, mut register_char: F) -> Result<Self, RegisterError> + fn register<F>(service_handle: u16, mut register_char: F) -> Result<Self, #ble::gatt_server::RegisterError> where - F: FnMut(Characteristic, &[u8]) -> Result<CharacteristicHandles, RegisterError>, + F: FnMut(#ble::gatt_server::Characteristic, &[u8]) -> Result<#ble::gatt_server::CharacteristicHandles, #ble::gatt_server::RegisterError>, { #code_register_chars |