Tech Kaizen

passion + usefulness = success .. change is the only constant in life

Search this Blog:

Showing posts with label MOBILE APPLICATION DEVELOPMENT. Show all posts
Showing posts with label MOBILE APPLICATION DEVELOPMENT. Show all posts

5G Network Overview

5G is a new network system that has much higher speeds and capacity, and much lower latency, than existing cellular systems. 5G networks will use a type of encoding called OFDM(Orthogonal Frequency Division Multiplexing), which is similar to the encoding that LTE uses.  The magic number here for 5G is in fact a floor of 1 Gbps, with numbers as high as 10 Gbps(circa).

The new technology is expected to use “millimeter wave” radio spectrum or wavelengths above 24 gigahertz. Higher frequencies carry significantly more data but they are also far more easily blocked by buildings, foliage, and even rain, making their use for mobile communications quite challenging.


5G New Radio (NR), the global 5G standard for a new OFDM-based air interface designed to support the wide variation of 5G device-types, services, deployments and spectrum.


1G, 2G, 3G, 4G


The G in 5G means it's a generation of wireless technology. While most generations have technically been defined by their data transmission speeds, each has also been marked by a break in encoding methods, or "air interfaces," which make it incompatible with the previous generation.

  • 1G was analog cellular. 
  • 2G technologies, such as CDMA, GSM, and TDMA, were the first generation of digital cellular technologies. 
  • 3G technologies, such as EVDO, HSPA, and UMTS, brought speeds from 200kbps to a few megabits per second. 
  • 4G technologies, such as WiMAX and LTE, were the next incompatible leap forward, and they are now scaling up to hundreds of megabits and even gigabit-level speeds.
      CN
     /    \
       RAN    RAN
    / \          / \

    UE  UE  UE UE

CN => Core Network
RAN => Radio Access Network (eNodeB)
UE => User Equipment(Mobile Phone)

ref:


3gpp specs - 

  • http://www.3gpp.org/
  • http://www.3gpp.org/DynaReport/38-series.htm
  • http://www.3gpp.org/news-events/3gpp-news/1614-sa_5g

5g NR - 

  • https://www.qualcomm.com/invention/technologies/5g-nr
  • http://niviuk.free.fr/store_fiveg.php

Misc -

  • https://www.tutorialspoint.com/lte/lte_protocol_stack_layers.htm
  • http://lteuniversity.com/
  • http://www.telecomhall.com
  • http://www.telecomdocs.com/
  • http://www.rfwireless-world.com/
  • http://www.telecomhall.com/what-is-rrc-and-rab.aspx
  • https://www.csie.ntu.edu.tw/~hsinmu/courses/_media/wn_11fall/ofdm_new.pdf
  • https://www.networkworld.com/article/3203489/lan-wan/what-is-5g-wireless-networking-benefits-standards-availability-versus-lte.html
  • https://cdn.rohde-schwarz.com/fr/general_37/local_webpages/LTE-A_IoT_On-the_road_to_5G_RS_France_March2017_5G.pdf

Videos -
  • https://www.youtube.com/watch?v=CI9No9Ci9Ro
  • https://www.youtube.com/watch?v=ZlQkHQbHQ_E
  • https://www.youtube.com/watch?v=oP0QgcCXF1Y
  • https://www.youtube.com/watch?v=7y75iBuW_6s
  • https://www.youtube.com/watch?v=E7GnlmxGhXc&list=PLDFUXqDBoC1jOq8cKqNLy6XtsoGNsrpkc
  • https://www.eventhelix.com/
  • https://www.eventhelix.com/RealtimeMantra/#.Wi8D_EqnFPZ

Posted by Krishna Kishore Koney
Labels: 5G, MOBILE APPLICATION DEVELOPMENT, TECHNOLOGY INTEGRATION

Apple Audio Processing .. CoreAudio

Apple Core Audio is the digital audio infrastructure of iOS and OS X. It includes a set of software frameworks designed to handle the audio needs in your applications. Apple CoreAudio API bit different between MacOSX & iOS as these API also consider the processing power of the device(desktop vs mobile).

In OS X, Core Audio expects audio data to be in native-endian, 32-bit floating-point, linear PCM format. You can use Audio Converter Services to translate audio data between different linear PCM variants. You also use these converters to translate between linear PCM and compressed audio formats such as MP3 and Apple Lossless. Core Audio in OS X supplies codecs to translate most common digital audio formats (though it does not supply an encoder for converting to MP3). iOS uses integer and fixed-point audio data. The result is faster calculations and less battery drain when processing audio. iOS provides a Converter audio unit and includes the interfaces from Audio Converter Services. For details on the so-called canonical audio data formats for iOS and OS X, see Canonical Audio Data Formats.

Audio units are software plug-ins that process audio data. In OS X, a single audio unit can be used simultaneously by an unlimited number of channels and applications. iOS provides a set of audio units optimized for efficiency and performance on a mobile platform. You can develop audio units for use in your iOS application. Because you must statically link custom audio unit code into your application, audio units that you develop cannot be used by other applications in iOS.

CoreAudio Frameworks Available in both iOS and OS X =>

AudioToolbox.framework - The Audio Toolbox framework contains the APIs that provide application-level services.

AudioUnit.framework - The Audio Unit framework contains the APIs used for managing plug-ins in Core Audio.

CoreAudio.framework - The Core Audio framework contains data types common to all Core Audio services, as well as lower-level APIs used to interact with hardware. In OS X, this framework contains the interfaces for Hardware Abstraction Layer (HAL) Services.

The frameworks listed in this section are available in iOS only =>

AVFoundation.framework - The AV Foundation framework provides an Objective-C interface for playing back audio with the control needed by most applications. The AV Foundation framework in iOS includes one header file:

AVAudioPlayer.h: Defines an interface for playing audio from a file or from memory.
Frameworks Available in OS X Only

The frameworks listed in this section are available in MAC OS X only =>

CoreAudioKit.framework - The Core Audio Kit framework contains APIs used for creating a Cocoa user interface for an audio unit.

CoreAudioKit.h: Top-level include file for the Core Audio Kit framework.
AUGenericView.h: Defines a generic Cocoa view class for use with audio units. This is the bare-bones user interface that is displayed if an audio unit doesn't create its own custom interface.
AUPannerView.h: Defines and instantiates a generic view for use with audio units.

Open source Mac/iOS Audio Libraries =>
  1. Novocaine - https://github.com/alexbw/novocaine
  2. EZAudio - https://github.com/syedhali/EZAudio
  3. OrigamiEngine - https://github.com/ap4y/OrigamiEngine
  4. FreeStreamerMobile - https://github.com/muhku/FreeStreamer/tree/master/FreeStreamerMobile
ref:
  1. https://developer.apple.com/library/mac/documentation/MusicAudio/Conceptual/AudioUnitProgrammingGuide/AQuickTouroftheCoreAudioSDK/AQuickTouroftheCoreAudioSDK.html
  2. https://developer.apple.com/library/mac/documentation/MusicAudio/Conceptual/CoreAudioOverview/WhatisCoreAudio/WhatisCoreAudio.html
  3. https://developer.apple.com/library/mac/documentation/MusicAudio/Conceptual/CoreAudioOverview/CoreAudioFrameworks/CoreAudioFrameworks.html

Posted by Krishna Kishore Koney
Labels: MAC OPERATING SYSTEM, MOBILE APPLICATION DEVELOPMENT

Cross Platform Audio(sound) Libraries ..

Cross Platform Audio(sound) libraries:
  1. PortAudio
  2. RtAudio
  3. JUCE
  4. libsoundio
  5. SDL
  6. OpenSL
  7. OpenMAX
PortAudio - PortAudio is a free, cross-platform, open-source, audio I/O library.  It lets you write simple audio programs in 'C' or C++ that will compile and run on many platforms including Windows, Macintosh OS X, and Unix (OSS/ALSA). It is intended to promote the exchange of audio software between developers on different platforms. Many applications use PortAudio for Audio I/O.

RtAudio - RtAudio is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows operating systems. RtAudio significantly simplifies the process of interacting with computer audio hardware.

JUCE - JUCE (Jules' Utility Class Extensions) is an all-encompassing C++ framework for developing cross-platform software. It contains pretty much everything you're likely to need to create most applications, and is particularly well-suited for building highly-customised GUIs, and for handling graphics and sound. JUCE officially supports Windows, Mac OS X, Linux, iOS, and Android.

libsoundio - libsoundio is a lightweight abstraction over various sound drivers. It provides a well-documented API that operates consistently regardless of the sound driver it connects to. It performs no buffering or processing on your behalf; instead exposing the raw power of the underlying backend. libsoundio is appropriate for games, music players, digital audio workstations, and various utilities.

SDL - Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games. SDL officially supports Windows, Mac OS X, Linux, iOS, and Android. Support for other platforms may be found in the source code.

Festival - library(&Edinburgh Speech Tools library) is a C++ Text to Voice generation library.

OpenMAX DL - OpenMAX DL (Development Layer) APIs contains a comprehensive set of audio, video and imaging functions that can be implemented and optimized on new CPUs, hardware engines, and DSPs and then used for a wide range of accelerated codec functionality such as MPEG-4, H.264, MP3, AAC and JPEG.

OpenSL ES - A royalty-free, cross-platform, hardware-accelerated audio API tuned for embedded systems. It provides a standardized, high-performance, low-latency method to access audio functionality for developers of native applications on embedded mobile multimedia devices, enabling straightforward cross-platform deployment of hardware and software audio capabilities, reducing implementation effort, and promoting the market for advanced audio.


OpenMAX vs OpenSL

OpenSL and OpenMAX are intended for slightly different uses, but have an overlap of functionality. OpenSL is intended for complex audio systems while OpenMAX is intended for general multi-media systems. Either can be used separately, or if needed both can be used - in the overlapping area the functionality is the same (even though the function calls are distinct). From the OpenSL ES and OpenMAX Al specifications this is shown by the following figure: 





Posted by Krishna Kishore Koney
Labels: IMAGE PROCESSING, MOBILE APPLICATION DEVELOPMENT, PORTING

Camera Subsystem(Module) ..

A camera module is an image sensor integrated with control electronics and an interface like CSI, Ethernet or plain raw low-voltage differential signaling.

ISP(Image Signal Processor) controls camera via 3A algorithms -
  1. Auto Exposure (AE) 
  2. Auto White Balance (AWB)
  3. Auto Focus (AF)


Android Camera Module:

ref:

Camera BOF - https://www.khronos.org/assets/uploads/developers/library/2013-siggraph-camera-bof/Camera-BOF_SIGGRAPH-2013.pdf


Real-time scene change detection assisted with camera 3A: auto exposure, auto white balance, and auto focus - http://spie.org/Publications/Proceedings/Paper/10.1117/12.872586


Android Camera Module - https://source.android.com/devices/camera/index.html


A Camera’s Image Processing Pipeline (part1) - 
http://www.cs.cmu.edu/afs/cs/academic/class/15869-f11/www/lectures/16_camerapipeline1.pdf

A Camera’s Image Processing Pipeline (part2) - 

http://www.cs.cmu.edu/afs/cs/academic/class/15869-f11/www/lectures/17_camerapipeline2.pdf

Full GPU Image Processing Pipeline for Camera Applications - 

http://on-demand.gputechconf.com/gtc/2014/presentations/S4728-gpu-image-processing-camera-apps.pdf

Color Image Processing Pipeline - http://www.cs.toronto.edu/~kyros/courses/2530/papers/Lecture-03/Ramanath2005.pdf


Libxcam(project for extended camera features, especially 3A process) - https://github.com/01org/libxcam


Single-Sensor Camera Image Processing - http://www.dsp.utoronto.ca/~kostas/Publications2008/pub/bookchapters/bch10.pdf


Getting the Most Out of Your Image-Processing Pipeline  -http://www.ti.com/lit/wp/spry105/spry105.pdf


Signal Processing in Digital Camera - http://av.jpn.support.panasonic.com/support/global/cs/dsc/knowhow/knowhow30.html


Digital Camera Image Formation -

http://www.springer.com/cda/content/document/cda_downloaddocument/9781461407560-c2.pdf?SGWID=0-0-45-1338820-p174130078

FlexISP: A Flexible Camera Image Processing Framework - https://research.nvidia.com/sites/default/files/publications/FlexISP.pdf


IIDC Camera Control Library(Capture and control API for IIDC compliant cameras) - http://sourceforge.net/projects/libdc1394/


Libdc1394 Library Support for IEEE 1394 Cameras HOWTO - http://www.tldp.org/HOWTO/libdc1394-HOWTO/index.html

Digital Camera Design: An Interesting Case Study - http://www.ee.ryerson.ca/~courses/ee8205/lectures/digital-camera-casestudy.pdf

Posted by Krishna Kishore Koney
Labels: IMAGE PROCESSING, LATEST TECHNOLOGY, MOBILE APPLICATION DEVELOPMENT

Windows Mobile Sound API .. Windows Audio Session API (WASAPI)

Windows Phone 8 makes uses of Windows Audio Session API (WASAPI) for audio capture/play. As Windows Universal is a natural extension to Windows Phone 8, WASAPI may be supported on it.

WASAPI enables client applications to manage the flow of audio data between the application and an audio endpoint device. WASAPI is also supported on Windows Desktop. As subset of WASAPI is supported on Windows 8 phone.
 

ref:
 

WASAPI - https://msdn.microsoft.com/en-us/library/windows/desktop/dd371455%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
 

C++ sample code using WASAPI -  
  • https://code.msdn.microsoft.com/windowsapps/Windows-Audio-Session-22dcab6b 
  • https://github.com/Microsoft/audio-recorder

Posted by Krishna Kishore Koney
Labels: MOBILE APPLICATION DEVELOPMENT

Windows 10 Universal Windows Platform (UWP) ..

Universal Windows Platform (UWP) which provides a guaranteed core API layer across devices. You can create a single app package that can be installed onto a wide range of devices. A single store makes it easy to publish apps across all device types. Because your UWP app runs on a wide variety of devices with different form factors and input modalities, you want it to be tailored to each device and be able to unlock the unique capabilities of each device. Devices add their own unique APIs to the guaranteed API layer. You can write code to access those unique APIs conditionally so that your app lights up features specific to one type of device while presenting a different experience on other devices. Adaptive UI controls and new layout panels help you to tailor your UI across a broad range of screen resolutions.

The Windows Runtime (WinRT) is the technology that lets you build Universal Windows Platform (UWP) apps. A Universal Windows app is a Windows experience that is built upon the Universal Windows Platform (UWP), which was first introduced in Windows 8 as the Windows Runtime. Universal Windows apps are most often distributed via the Windows Store (but can also be side-loaded), and are most often packaged and distributed using the .APPX packaging format. Windows on ARM will only support WinRT, and not Win32.Those application which are metro application they has to go through WinRT & Classic Applications has to go through WIN32 Api's.

Visual Studio provide a Universal Windows app template that lets you create a Windows Store app (for PCs, tablets, and laptops) and a Windows Phone Store app in the same project. When your work is finished, you can produce app packages for the Windows Store and Windows Phone Store with a single action to get your app out to customers on any Windows device. You can create Universal Windows apps using the programming languages you're most familiar with, like JavaScript, C#, Visual Basic, or C++. You can even write components in one language and use them in an app that's written in another language. Universal Windows apps can use the Windows Runtime, a native API built into the operating system. This API is implemented in C++ and supported in JavaScript, C#, Visual Basic, and C++ in a way that feels natural for each language.

The following are the conditional compilation constants that you can use to write platform-specific code:
C#
WINDOWS_APP
WINDOWS_PHONE_APP
C++
WINAPI_FAMILY_PC_APP
WINAPI_FAMILY_PHONE_APP

ref:

Guide to Universal Windows Platform (UWP) apps - https://msdn.microsoft.com/en-us/library/Dn894631.aspx

Build a Windows 10 universal app - https://msdn.microsoft.com/library/windows/apps/xaml/dn609832.aspx#target_win10

Best practices in developing (universal) apps for Windows Runtime - https://github.com/futurice/windows-app-development-best-practices

Port your app to the Universal Windows Platform (UWP) -
  1. https://msdn.microsoft.com/en-us/library/windows/apps/Dn751495.aspx
  2. https://msdn.microsoft.com/en-us/library/dn986839(v=vs.140).aspx
How to: Use Existing C++ Code in a Universal Windows Platform App - https://msdn.microsoft.com/en-us/library/mt186162.aspx

Porting Android Apps to Windows 10 - http://venturebeat.com/2015/05/01/everything-you-need-to-know-about-porting-android-and-ios-apps-to-windows-10/

VC++ Team Blog - 
  1. http://blogs.msdn.com/b/vcblog/
  2. http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx
  3. http://code.tutsplus.com/tutorials/creating-your-first-universal-windows-app--cms-23122
  4. http://blogs.msdn.com/b/vcblog/archive/2015/07/20/visual-studio-2015-rtm-now-available.aspx
Universal Windows Platform(UWP) sample code - 
  1. https://msdn.microsoft.com/en-us/library/windows/apps/Dn751495.aspx
  2. https://github.com/Microsoft/Windows-universal-samples
Microsoft Virtual Academy resources -
  1. http://www.microsoftvirtualacademy.com/training-courses/a-developers-guide-to-windows-10
  2. http://www.microsoftvirtualacademy.com/training-courses/developing-universal-windows-apps-with-c-and-xaml
  3. http://www.microsoftvirtualacademy.com/training-courses/developing-universal-windows-apps-with-html-and-javascript-jump-start
  4. http://www.microsoftvirtualacademy.com/training-courses/developing-games-with-marmalade-and-c-for-windows-and-windows-phone
UWP Channel9 Videos -
  1. https://channel9.msdn.com/Series/A-Developers-Guide-to-Windows-10
  2. https://channel9.msdn.com/Events/TechEd/Australia/2014/WPD305
  3. https://channel9.msdn.com/Series/Creating-a-Universal-App-in-VB/UWP-port-from-81-universal-app-to-Win10

Posted by Krishna Kishore Koney
Labels: MOBILE APPLICATION DEVELOPMENT, VC++ PROGRAMMING, WINDOWS OPERATING SYSTEM

NFC(Near Field Communication): Android to Android

Near field communication (NFC) is a set of ideas and technology that enables smartphones and other devices to establish radio communication with each other by touching the devices together or bringing them into proximity to a distance of typically 10 cm (3.9 in) or less.

RFID is the process by which items are uniquely identified using radio waves, and NFC is a specialized subset within the family of RFID technology. Specifically, NFC is a branch of High-Frequency (HF) RFID, and both operate at the 13.56 MHz frequency. Evolved from radio frequency identification (RFID) tech, an NFC chip operates as one part of a wireless link. Once it's activated by another chip, small amounts of data between the two devices can be transferred when held a few centimeters from each other. 


NFC is designed to be a secure form of data exchange, and an NFC device is capable of being both an NFC reader and an NFC tag. This unique feature allows NFC devices to communicate peer-to-peer. At the end of the day, NFC builds upon the standards of HF RFID and turns the limitations of its operating frequency into a unique feature of near-field communication.

The HCE(Host-based Card Emulation) architecture in Android is based around Android Service components (known as "HCE services"). One of the key advantages of a service is that it can run in the background without any user interface. This is a natural fit for many HCE applications like loyalty or transit cards, with which the user shouldn't need to launch the app to use it. The whole idea behind using a service as the target for HCE events (and not an activity as it is the case for other NFC events) is that the HCE functionbality should be accessible at any time and does not require an activity to be in the foreground.

NFC does not work if screen is BLACKED out. NFC may not work if the screen is UNLOCKED. NFC will work when is screen is LOCKED. That’s when HCE Service on the device wakes up. processCommandApdu() is called whenever a NFC reader sends an Application Protocol Data Unit (APDU) to your service. APDUs are defined in the ISO/IEC 7816-4 specification as well. APDUs are the application-level packets being exchanged between the NFC reader and your HCE service. That application-level protocol is half-duplex: the NFC reader will send you a command APDU, and it will wait for you to send a response APDU in return.

public class MyHostApduService extends HostApduService {
    @Override
    public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
       ...
    }
    @Override
    public void onDeactivated(int reason) {
       ...
    }
}

ref:

NFC - http://www.nearfieldcommunication.org/

Emulate a NFC tag with HCE to open a door with a NFC/RFID lock - http://www.reddit.com/r/androiddev/comments/2vfb1e/emulate_a_nfc_tag_with_hce_to_open_a_door_with_a/

NFC HCE -  https://developer.android.com/guide/topics/connectivity/nfc/hce.html#HceServices

NFC vs RFID - http://blog.atlasrfidstore.com/rfid-vs-nfc

Posted by Krishna Kishore Koney
Labels: MOBILE APPLICATION DEVELOPMENT, WIRELESS DEVELOPMENT

Image Processing Libraries: OpenCV, OpenMAX

OpenCV (Open Source Computer Vision) is a library of programming functions mainly aimed at real-time computer vision. The library is cross-platform. It focuses mainly on real-time image processing. If the library finds Intel's Integrated Performance Primitives on the system, it will use these proprietary optimized routines to accelerate itself.

OpenVX (Open Vision Acceleration) is an open, royalty-free standard for cross platform acceleration of computer vision applications. It is designed by the Khronos Group to facilitate portable, optimized and power-efficient processing of methods for vision algorithms. This is aimed for embedded and real-time programs within computer vision and related scenarios. It uses a connected graph representation of operations.


OpenMAX Integration Layer (IL) is a standard API to access Multimedia Components on mobile platforms. It focuses mainly on audio, video, and still images processing. It has been defined by the Khronos group. By means of the OpenMAX IL API, multimedia frameworks can access hardware accelerators on platforms that provide it. Bellagio is an opensource implementation of the OpenMAX IL API that runs on Linux.It is intended to show the usage of the IL API and to allow people to start developing components.This package provides the OpenMAX IL core shared library with a "reference" component.


OpenMAX DL is a OpenMAX DL (Development Layer) APIs contains a comprehensive set of audio, video and imaging functions that can be implemented and optimized on new CPUs, hardware engines, and DSPs and then used for a wide range of accelerated codec functionality such as MPEG-4, H.264, MP3, AAC and JPEG.


Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. They currently cover the two following feature sets, and more will come in the future: Dense matrix and array manipulations, Sparse linear algebra. Eigenfaces is a popular Facial Recognition library.

Festival library(&Edinburgh Speech Tools library) is a C++ Text to Voice generation library.

Posted by Krishna Kishore Koney
Labels: C++ PROGRAMMING, IMAGE PROCESSING, LINUX, MOBILE APPLICATION DEVELOPMENT

Bluetooth Technology Overview

Bluetooth is a wireless technology for creating personal networks operating in the 2.4 GHz unlicensed band, with a range of 10 meters. Networks are usually formed ad-hoc from portable devices such as cellular phones, handhelds, and laptops. Unlike Wi-Fi wireless technology, Bluetooth offers higher level service profiles, such as FTP-like file servers, file pushing, voice transport, serial line emulation, and more. RFCOMM(Radio Frequency Communication) protocol provides emulation of serial ports over the L2CAP protocol. RFCOMM is a simple transport protocol, with additional provisions for emulating the 9 circuits of RS-232 (EIATIA-232-E) serial ports. It supports up to 60 simultaneous connections (RFCOMM channels) between two Bluetooth devices. RFCOMM is intended to cover applications that make use of the serial ports of the devices in which they reside. The communication segment is a direct connect Bluetooth link from one device to another.

Bluetooth Low Energy(BLE) or Bluetooth LE, marketed as Bluetooth Smart, is a wireless personal area network technology designed and marketed by the Bluetooth Special Interest Group. Compared to Classic Bluetooth, Bluetooth Smart is intended to provide considerably reduced power consumption and cost while maintaining a similar communication range. Bluetooth Smart uses the same 2.4 GHz radio frequencies as Classic Bluetooth, which allows dual-mode devices to share a single radio antenna. LE does, however, use a simpler modulation system. Bluetooth v4.0 standard is the creation of dual-mode capabilities that allow for classic Bluetooth operation as well as Bluetooth low energy support – the best of both worlds.  The latest Bluetooth specification uses a service-based architecture based on the attribute protocol (ATT). All communication in low energy takes place over the Generic Attribute Profile (GATT). An application or another profile uses the GATT profile so a client and server can interact in a structured way.The server contains a number of attributes, and the GATT Profile defines how to use the Attribute Protocol to discover, read, write and obtain indications. These features support a service-based architecture. The services are used as defined in the profile specifications. GATT enables you to expose service and characteristics defined in the profile specification.The GATT profile is also part of the core and defined in the core specification.

BlueZ: BlueZ is the Bluetooth stack for Linux kernel-based family of operating systems.

BlueZ BLE "C" API:
hci_le_set_scan_enable
hci_le_set_scan_parameters
hci_open_dev

BlueZ Bluetooth "C" API:
hci_inquiry
hci_open_dev

BLE "C" Programming Overview:


Call hci_le_set_scan_parameters to set options, setsockopt(SOL_HCI, HCI_FILTER, filter) to just get LE scan events and then callhci_le_set_scan_enable to turn on scanning(there's a function called hci_get_route to get an available device number). Each device connection was made with a socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP) which you then tell to connect to a particular device by calling connect on the socket with a struct sockaddr_l2 that has the particular device address in it.

ref:

Bluetooth specifications - 
  • https://www.bluetooth.org/en-us/specification/adopted-specifications
  • http://chapters.comsoc.org/vancouver/BTLER3.pdf
Bluetooth SIG(Special Interest Group) - https://www.bluetooth.org/en-us

Bluetooth developer portal - https://developer.bluetooth.org/TechnologyOverview/Pages/RFCOMM.aspx

BLE(Bluetooth Low Energy) - http://en.wikipedia.org/wiki/Bluetooth_low_energy

Bluetooth libraries - http://www.jenkinssoftware.com/raknet/manual/bluetooth.html

Linux Bluetooth library , BlueZ - http://www.bluez.org/

Introduction to Bluetooth programming - http://people.csail.mit.edu/albert/bluez-intro/

Best Practices for Bluetooth Development - http://commondatastorage.googleapis.com/io-2013/presentations/129%20-%20Bluetooth%20Best%20Practices.pdf

Bluetooth Specification RFCOMM with Application - http://hccc.ee.ccu.edu.tw/courses/bt/vg/rfcomm.pdf

Linux Bluetooth code - 
  • http://lxr.free-electrons.com/source/net/bluetooth/
  • http://lxr.free-electrons.com/source/include/net/bluetooth/rfcomm.h
Android Bluetooth overview - http://developer.android.com/guide/topics/connectivity/bluetooth.html

Android audio native programming using OpenSL ES - http://audioprograming.wordpress.com/2012/03/03/android-audio-streaming-with-opensl-es-and-the-ndk/


BlueNMEA is an Android application which sends location data over Bluetooth (RFCOMM) or TCP in the NMEA format - http://max.kellermann.name/projects/blue-nmea/


Misc - http://www.bluetooth.com/Pages/Bluetooth-Home.aspx

BlueZ Ble Server(Advertiser) - https://gist.github.com/AlexanderLea/8e4a7ff46dcfa42ce565


BlueZ Ble Client - https://github.com/carsonmcdonald/bluez-experiments/blob/master/experiments/scantest.c


BlueZ - 

  1. BlueZ - http://www.bluez.org/, http://sourceforge.net/projects/bluez/
  2. How to setup Bluetooth - http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth
  3. BlueZ - https://wiki.archlinux.org/index.php/bluetooth
  4. Linux BlueZ programming introduction - http://people.csail.mit.edu/albert/bluez-intro/
  5. Linux BlueZ Howto - http://www.tik.ee.ethz.ch/~beutel/pub/bluezhowto.pdf
  6. Linux VHCI(Virtual Host Controller Interface) driver - https://sourceforge.net/projects/usb-vhci/

Posted by Krishna Kishore Koney
Labels: MOBILE APPLICATION DEVELOPMENT, WIRELESS DEVELOPMENT
Older Posts Home
Subscribe to: Posts (Atom)

The Verge - YOUTUBE

Loading...

Hard Fork Podcast

Loading...

Dwarkesh Patel Podcast

Loading...

SemiAnalysis Podcast (Dylan Patel)

Loading...

Andrej Karpathy Youtube Channel

Loading...

Microsoft Research

Loading...

Hugging Face - Blog

Loading...

AI at Wharton

Loading...

Stanford Online

Loading...

MIT OpenCourseWare - YOUTUBE

Loading...

NPTEL IISC BANGALORE - YOUTUBE

Loading...

HackerRank - YOUTUBE

Loading...

FREE CODE CAMP - YOUTUBE

Loading...

BYTE BYTE GO - YOUTBUE

Loading...

GAURAV SEN INTERVIEWS - YOUTUBE

Loading...

Tanay Pratap - YOUTUBE

Loading...

Ashish Pratap Singh - YOUTUBE

Loading...

Kantan Coding - YOUTUBE

Loading...

SUCCESS IN TECH INTERVIEWS - YOUTUBE

Loading...

IGotAnOffer: Engineering - YOUTUBE

Loading...

DEEPLEARNING AI - YOUTUBE

Loading...

MIT News - Artificial intelligence

Loading...
My photo
Krishna Kishore Koney
View my complete profile
" It is not the strongest of the species that survives nor the most intelligent that survives, It is the one that is the most adaptable to change "

View krishna kishore koney's profile on LinkedIn


Failure is not falling down, it is not getting up again. Success is the ability to go from failure to failure without losing your enthusiasm.

Where there's a Will, there's a Way. Keep on doing what fear you, that is the quickest and surest way to to conquer it.

Vision is the art of seeing what is invisible to others. For success, attitude is equally as important as ability.

Monthly Blog Archives

  • ▼  2026 (7)
    • ▼  July (2)
      • REST vs GraphQL
      • Nautobot: Opensource Network Source of Truth (NSoT...
    • ►  May (1)
    • ►  April (1)
    • ►  March (3)
  • ►  2025 (4)
    • ►  October (1)
    • ►  August (1)
    • ►  May (1)
    • ►  April (1)
  • ►  2024 (18)
    • ►  December (1)
    • ►  October (2)
    • ►  September (5)
    • ►  August (10)
  • ►  2022 (2)
    • ►  December (2)
  • ►  2021 (2)
    • ►  April (2)
  • ►  2020 (18)
    • ►  November (1)
    • ►  September (8)
    • ►  August (1)
    • ►  June (8)
  • ►  2019 (18)
    • ►  December (1)
    • ►  November (2)
    • ►  September (3)
    • ►  May (8)
    • ►  February (1)
    • ►  January (3)
  • ►  2018 (3)
    • ►  November (1)
    • ►  October (1)
    • ►  January (1)
  • ►  2017 (2)
    • ►  November (1)
    • ►  March (1)
  • ►  2016 (5)
    • ►  December (1)
    • ►  April (3)
    • ►  February (1)
  • ►  2015 (15)
    • ►  December (1)
    • ►  October (1)
    • ►  August (2)
    • ►  July (4)
    • ►  June (2)
    • ►  May (3)
    • ►  January (2)
  • ►  2014 (13)
    • ►  December (1)
    • ►  November (2)
    • ►  October (4)
    • ►  August (5)
    • ►  January (1)
  • ►  2013 (5)
    • ►  September (2)
    • ►  May (1)
    • ►  February (1)
    • ►  January (1)
  • ►  2012 (19)
    • ►  November (1)
    • ►  October (2)
    • ►  September (1)
    • ►  July (1)
    • ►  June (6)
    • ►  May (1)
    • ►  April (2)
    • ►  February (3)
    • ►  January (2)
  • ►  2011 (20)
    • ►  December (5)
    • ►  August (2)
    • ►  June (6)
    • ►  May (4)
    • ►  April (2)
    • ►  January (1)
  • ►  2010 (41)
    • ►  December (2)
    • ►  November (1)
    • ►  September (5)
    • ►  August (2)
    • ►  July (1)
    • ►  June (1)
    • ►  May (8)
    • ►  April (2)
    • ►  March (3)
    • ►  February (5)
    • ►  January (11)
  • ►  2009 (113)
    • ►  December (2)
    • ►  November (5)
    • ►  October (11)
    • ►  September (1)
    • ►  August (14)
    • ►  July (5)
    • ►  June (10)
    • ►  May (4)
    • ►  April (7)
    • ►  March (11)
    • ►  February (15)
    • ►  January (28)
  • ►  2008 (61)
    • ►  December (7)
    • ►  September (6)
    • ►  August (1)
    • ►  July (17)
    • ►  June (6)
    • ►  May (24)
  • ►  2006 (7)
    • ►  October (7)

Blog Archives Categories

  • .NET DEVELOPMENT (38)
  • 5G (5)
  • AI (Artificial Intelligence) (16)
  • AI/ML (10)
  • ANDROID DEVELOPMENT (7)
  • BIG DATA ANALYTICS (6)
  • C PROGRAMMING (7)
  • C++ PROGRAMMING (24)
  • CAREER MANAGEMENT (6)
  • CHROME DEVELOPMENT (2)
  • CLOUD COMPUTING (47)
  • CODE REVIEWS (3)
  • CYBERSECURITY (12)
  • DATA SCIENCE (4)
  • DATABASE (14)
  • DESIGN PATTERNS (9)
  • DEVICE DRIVERS (5)
  • DIY (3)
  • DOMAIN KNOWLEDGE (14)
  • EDGE COMPUTING (4)
  • EMBEDDED SYSTEMS (9)
  • ENTERPRISE ARCHITECTURE (10)
  • IMAGE PROCESSING (3)
  • INTERNET OF THINGS (2)
  • J2EE PROGRAMMING (10)
  • KERNEL DEVELOPMENT (6)
  • KUBERNETES (20)
  • LATEST TECHNOLOGY (25)
  • LINUX (9)
  • MAC OPERATING SYSTEM (2)
  • MOBILE APPLICATION DEVELOPMENT (14)
  • PORTING (4)
  • PYTHON PROGRAMMING (6)
  • RESEARCH AND DEVELOPMENT (1)
  • SCRIPTING LANGUAGES (8)
  • SERVICE ORIENTED ARCHITECTURE (SOA) (10)
  • SOFTWARE DESIGN (13)
  • SOFTWARE QUALITY (5)
  • SOFTWARE SECURITY (24)
  • SYSTEM and NETWORK ADMINISTRATION (4)
  • SYSTEM PROGRAMMING (4)
  • TECHNICAL MISCELLANEOUS (32)
  • TECHNOLOGY INTEGRATION (5)
  • TEST AUTOMATION (5)
  • UNIX OPERATING SYSTEM (4)
  • VC++ PROGRAMMING (44)
  • VIRTUALIZATION (8)
  • WEB PROGRAMMING (8)
  • WINDOWS OPERATING SYSTEM (13)
  • WIRELESS DEVELOPMENT (5)
  • XML (3)

Popular Posts

  • REST vs GraphQL
  • DACL - Discretionary Access Control List
  • Uninstall Kubernetes on CentOS Shell Script
  • Nautobot: Opensource Network Source of Truth (NSoT) and Network Automation Platform

My Other Blogs/Channels

  • Career Management: Invest in Yourself
  • A la carte: Color your Career
  • Attitude is everything(Telugu language)
  • "Invest in Yourself" Youtube Channel (Telugu language)
WINNING vs LOSING

Hanging on, persevering, WINNING
Letting go, giving up easily, LOSING

Accepting responsibility for your actions, WINNING
Always having an excuse for your actions, LOSING

Taking the initiative, WINNING
Waiting to be told what to do, LOSING

Knowing what you want and setting goals to achieve it, WINNING
Wishing for things, but taking no action, LOSING

Seeing the big picture, and setting your goals accordingly, WINNING
Seeing only where you are today, LOSING

Being determined, unwilling to give up WINNING
Gives up easily, LOSING

Having focus, staying on track, WINNING
Allowing minor distractions to side track them, LOSING

Having a positive attitude, WINNING
having a "poor me" attitude, LOSING

Adopt a WINNING attitude!

Total Pageviews

Who am I

My photo
Krishna Kishore Koney

Blogging is about ideas, self-discovery, and growth. This is a small effort to grow outside my comfort zone.

Most important , A Special Thanks to my parents(Sri Ramachandra Rao & Srimathi Nagamani), my wife(Roja), my lovely daughter (Hansini) and son (Harshil) for their inspiration and continuous support in developing this Blog.

... "Things will never be the same again. An old dream is dead and a new one is being born, as a flower that pushes through the solid earth. A new vision is coming into being and a greater consciousness is being unfolded" ... from Jiddu Krishnamurti's Teachings.

Now on disclaimer :
1. Please note that my blog posts reflect my perception of the subject matter and do not reflect the perception of my Employer.

2. Most of the times the content of the blog post is aggregated from Internet articles and other blogs which inspired me. Due respect is given by mentioning the referenced URLs below each post.

Have a great time

My LinkedIn Profile
View my complete profile

Aryaka Insights

Loading...

Reid Hoffman - YOUTUBE

Loading...

Martin Fowler's Bliki - BLOG

Loading...

The Pragmatic Engineer

Loading...

AI Workshop

Loading...

CYBER SECURITY - YOUTUBE

Loading...

CYBER SECURITY FUNDAMENTALS PROF MESSER - YOUTUBE

Loading...