Coder Social home page Coder Social logo

nordicsemiconductor / android-nrf-toolbox Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 460.0 12.74 MB

The nRF Toolbox is a container app that stores your Nordic Semiconductor apps for Bluetooth Low Energy in one location.

Home Page: https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Toolbox

License: BSD 3-Clause "New" or "Revised" License

Ruby 0.36% Kotlin 98.54% Java 1.10%

android-nrf-toolbox's People

Contributors

andreikaralkou avatar danwood76 avatar follower avatar hrldcpr avatar philips77 avatar renovate[bot] avatar roshanrajaratnam avatar sylwester-zielinski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-nrf-toolbox's Issues

Can not resolve symbol 'DfuProgressListener'

when I open 'Android-nRF-Toolbox' ,a problem occured

in file DfuActivity.java

import no.nordicsemi.android.dfu.DfuProgressListener;
import no.nordicsemi.android.dfu.DfuProgressListenerAdapter;
import no.nordicsemi.android.dfu.DfuServiceListenerHelper;
import no.nordicsemi.android.dfu.DfuServiceInitiator;

ERROR: Can not resolve symbol 'DfuProgressListener'
ERROR: Can not resolve symbol 'DfuProgressListenerAdapter'
ERROR: Can not resolve symbol 'DfuServiceListenerHelper'
ERROR: Can not resolve symbol 'DfuServiceInitiator'

but DFU Library has already placed with Android-nRF-Toolbox directory

Settings.gradle:

project(':dfu').projectDir = file('../DFULibrary-master/dfu')

Please, how can I solves this problem?

Help Filtering Devices Out for UART

Hi Guys,

Love this toolbox. Little issue though.

I have tried a lot to figure out how to filter out all the available devices for the UART activity. It seems very convoluted to me and I am having a difficult time figuring out how these devices even get listed. I've looked at DeviceListAdapter, DeviceAdapter, ScannerFragment. How could I, for example, only list devices that began with "My"?

Is this enough info what I am asking here?

Casey

Mode DFU

Error: "GATT CONN TIMEOUT"

D/BluetoothGatt: connect() - device: 3B:90:58:F6:36:37, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=477ed59a-1877-4b6e-b7f1-b4ff04ea544f
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=7
D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=7 device=3B:90:58:F6:36:37
D/BluetoothGatt: discoverServices() - device: 3B:90:58:F6:36:37
D/BluetoothGatt: onSearchComplete() = Device=3B:90:58:F6:36:37 Status=0
D/BluetoothGatt: setCharacteristicNotification() - uuid: 00001531-1212-efde-1523-785feabcd123 enable: true
D/BluetoothGatt: onClientConnectionState() - status=8 clientIf=7 device=3B:90:58:F6:36:37
DfuBaseService: Connection state change error: 8 newState: 0
DfuBaseService: Unable to write Init DFU Parameters (error 32776)

Mobile used: Samsung Galay S6

Not working DFU.

Custom `BleManager` implementation

Hi Nordic team,

This is not really an issue but more a discussion.

I am an embedded BLE and Android developer. I saw that you provide the Android-Scanner-Compat-Library project and some other libraries on the Maven Central repository which is great and helpful.

I also see that you made a custom BleManager implementation to manage the low level communication with Bluetooth Smart devices. This basically add a queue of requests (ATT commands) which is no available in the Android BLE stack.

I also made my own implementation of the BleManager class which also includes a BLE request queue, timeout, support read/write request retries, etc. I saw that your BleManager implementation is available in many places (see this search on Github):

  1. NordicSemiconductor/Android-Digital-Bird
  2. NordicSemiconductor/Android-nRF-Blinky
  3. NordicSemiconductor/Android-nRF-Toolbox
  4. NordicSemiconductor/Android-nRF-Toolbox Wear

All these versions seems to be a bit different in each project. @philips77 it seems you are the developer of this. Which version is the most recent ? Do you plan (Nordic) to provide the BLE classes as a library ? Thanks in advance.

"DFU device not found" error

I'm trying to upgrade firmware of iwown i5 Plus bracelet (not working without connecting it to power, so i'm trying to restore it), but everytime i try to upload firmware to Braceli-0164 (my device name), i'm getting that "DFU device not found" error.

Different mobile phones sometimes have problems

The use of XIAOMI,SunSang and others handsets can be upgraded every time,but my HuaWei4x can not, the connection is broken when the Implement progress is almost 15%. I set 55mm delay when send zip,it could success sometimes,but it is slow so much , where sometime have DeadObjectException. and the oppo R9 can‘t connect device.I am sorry,as a Chinese I am not good at English.can you understant me?

Failed connection has no callback

After calling connect(BluetoothDevice) in BleManager class the Android starts to connect. However, if for some reason the connection fail to be established (error 133, or 8 (timeout)) there is no any callback to the app. The onDeviceDisconnected is not called as the device wasn't connected, the onError is also not called as the new state is STATE_DISCONNECTED. See here:

if (newState == BluetoothProfile.STATE_DISCONNECTED) {

Android6.0 received data is not real time

hi, I have a Bluetooth device that send data in 50 Hz by uart. But I received data is not uniform by 50 Hz
in Android 6.0 huawei P9 and other Android7.0 phone. in Android4.4 is ok.

Service does not fire onDeviceReady when previously connected

I was adapting my app (using the multiconnect profile) to keep the service persistent when switching between activities. One issue I ran into is that when the service is bound it fires an onDeviceConnected event if the device is connected. However at the level of how we interact with the devices it is much more pertinent to know if the onDeviceReady has fired since that is when all the characteristics have been discovered. It is also really quite awkward to know if the device has already fired that event as the is mInitInProgress variable does not have an accessor in the BleManager.

I'm happy to submit a pull request extending the BleMulticonnectProfileServiceReadyActivity and BleManager to track the ready state internally and when bound fire that event after firing onDeviceConnected. To me this seems like an elegant solution to the problem and does not require activities to attempt to infer the device connectivity state.

Thoughts?

getGattCallback() in GlucoseManager errors "Method does not override method from its superclass" (Problems with GlucoseManager.class)

Hello, first I wanted to thank you for this amazing library, however I would appreciate some help. I'm not sure if I'm misunderstanding, but I'm running into many problems within the GlucoseManager class.

1) Method doesn't override
Within the GlucoseManager which extends BleManager:

public class GlucoseManager extends BleManager<GlucoseManagerCallbacks> {...{

There is a method which overrides getGattCallback():

@Override
protected BleManagerGattCallback getGattCallback() {
  return mGattCallback;
}

However, Android Studio shows an error:

 "Method does not override method from its superclass"

2) BleManagerGattCallback override problems
But that's not the only method erroring like that, there's a also the BleManagerGattCallback also within the GlucoseManager:

private final BleManagerGattCallback mGattCallback = new BleManagerGattCallback() {
  @Override
  protected Deque<Request> initGatt(final BluetoothGatt gatt) {
    ...
  }
  @Override
  public boolean isRequiredServiceSupported(final BluetoothGatt gatt) {
    ...
  }
  ...
  @Override
  protected void onCharacteristicWrite(final BluetoothGatt gatt, final BluetoothGattCharacteristic characteristic) {
    ...
  }
  ...
}

Every function within the BleManagerGattCallback which has @OverRide errors with "Method does not override method from its superclass".

3) BleManagerCallbacks cannot resolve methods
Also with GlucoseManager, any method call using BleManagerCallbacks mCallbacks; states "Cannot resolve method 'methodNameHere(argumentHere)" such as:

mCallbacks.onDatasetChanged(gatt.getDevice());
...
mCallbacks.onNumberOfRecordsRequested(gatt.getDevice(), number);
...
mCallbacks.onOperationCompleted(gatt.getDevice());
...
mCallbacks.onOperationCompleted(mBluetoothDevice);
...

I'm not sure if I'm doing something wrong or misunderstanding, but there seems to be many issues with the GlucoseManager? I really appreciate you uploading this library, it has been a tremendous help and any further help would really be appreciated :).

Sending data to bonded devices with Service Changed char does not work on 2.3.0 o Android 6 or lower

The issue is related to https://github.com/NordicSemiconductor/Android-nRF-Toolbox/blob/master/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleManager.java#L391. The ensureServiceChangedEnabled() method is called by ``nextRequest()which sets themOperationInProgress``` flag to true. Adding another request in the line mentioned above is an error, as it will not be processed. Instead ```internalEnableNotifications(...)``` should be called.

Module Not Defined

After importing the zip file,the android studio is showing. Module not defined.

Device connection is dead if an error occurs

In the BleManager the mOperationInProgress is set to false only on Success:
https://github.com/NordicSemiconductor/Android-nRF-Toolbox/blob/v2.5.2/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleManager.java#L1299
In case there is an error in on[Characteristic/Descriptor][Read/Write](...) callback this flag is never cleared and no other operation from the queue will be performed. It's better to clear it no matter the operation status. If the error was critical the device would disconnect/reset, but some errors can be ignored.

Unable to find writeCharacteristic(BluetoothGattCharacteristic) in Android-nRF-Toolbox

In class CGMSManager, GlucoseManager, ProximityManager.

error: no suitable method found for writeCharacteristic(BluetoothGattCharacteristic)
method BleManager.writeCharacteristic(BluetoothGattCharacteristic,byte[]) is not applicable
(actual and formal argument lists differ in length)
method BleManager.writeCharacteristic(BluetoothGattCharacteristic,byte[],int) is not applicable
(actual and formal argument lists differ in length)

In Ble Manager I add the missing function

/**
 * Writes the characteristic value to the given characteristic.
 * The write type will be read from the characteristic.
 *
 * @param characteristic the characteristic to write to
 * @return true if request has been enqueued
 */
protected final boolean writeCharacteristic(final BluetoothGattCharacteristic characteristic) {
	return enqueue(Request.newWriteRequest(characteristic, characteristic.getValue()));
}

HTS doesn't run on HTC10 Evo (Android 7)

Hello, I am using the app on my HTC10 Evo which is using Android 7.0
All the services run well except the HTS. The device is recognized but when I connect, the values are displayed. I test the iOS nRF Toolbox and it recognized my device and received the temperature value.
Anything I can do to fix this? Thank you very much

App not detecting a Heart Rate Service

I have a nRF51822 and I'm using mbed platform to integrate a Heart Rate Service, however this app does not detect the service when scanning. I've also implemented the UART Service and it does find it.

I've found that other people have a similar problem because Bluetooth was sending incorrect advertising packets, but this bug was already solved in mbed. I've checked with nRF Master Control Panel and advertising is working properly. With this app I can also detect the Heart Rate Service and read its characteristics.

Is it possible that the BT scanner filter, which is looking for an UUID = 0000180D-0000-1000-8000-00805f9b34fb, doesn't take into account the HR Service which uses only the 16-bit (UUID = 180D) (because it is an adopted service)?

missing feature watch

when i try to install the app ,when it came to the device choose dialog,it shows "missing feature:watch".
my phone's api is 22,so what is the problem

Close the toast

sometime we get dfu disconnect toast when dfu update sucessful.But i could't find any Toast whole the project.so there are any way to close the toast?forgive me poor english.Thaks any suggests

How to use BleManager in my application?

Hi, I am a beginner developer in Android app so before I start I want to state that it is highly likely that the problem I am encountering is due to my lack of knowledge on application development and not this project itself.

I am trying to use BleManager in my own application to connect to nRf51-DK. So far I have accomplished in doing :

  1. Compile, install and run this project on Android.
  2. The self compiled project can be used and correctly connected to nRF51-DK

From what I understand, I should only use the BleManager part and it's dependency( Which should exclude the interfaces/logic/control of nRFToolbox itself ). So for starters in order to not mix up my own code with this project I tried importing the whole "app" module of this project into my own project. I got these errors.

Unable to resolve dependency for ':myproject@debug/compileClasspath': Could not resolve project :app.

Could not resolve project :app.
Required by:
project :myproject
Unable to find a matching configuration of project :app:
- Configuration 'debugApiElements':
- Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
- Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Apk'.
- Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
- Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'.
- Configuration 'debugMetadataElements':
- Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
- Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Metadata'.
- Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
- Required org.gradle.api.attributes.Usage 'java-api' but no value provided.
- Configuration 'debugRuntimeElements':
- Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
- Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Apk'.
- Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
- Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'.
- Configuration 'releaseApiElements':
- Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found incompatible value 'release'.
- Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Apk'.
- Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
- Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'.
- Configuration 'releaseMetadataElements':
- Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found incompatible value 'release'.
- Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Metadata'.
- Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
- Required org.gradle.api.attributes.Usage 'java-api' but no value provided.
- Configuration 'releaseRuntimeElements':
- Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found incompatible value 'release'.
- Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Apk'.
- Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
- Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'.

After try googling and reading about Android studio dependency settings I still could not resolve the issue so then I tried creating a new module in this project instead. But as soon as I add "app" module as a dependency to my own module, the same errors occur.

Would the correct way to cleanly use BleManager be copying part of the source code of this project? Any help or pointer is appreciated. Thank you.

Notifications enabled using Write Command

Prior to Android 6 there was a bug on Android. The gatt.writeDescriptor(descriptor) method was using parent characteristic's write type, instead of always using WRITE_DEFAULT (Write Request).
nRF Toolbox was ensuring the write type for normal descriptor writes (see here), but this workaround wasn't applied during enabling notifications/indications (here, here and here).
In all those cases it also should ensure correct write type.

progress bar does not update during sleep

A bug has found.Setting the screen display time to 15s, but the application transferring file may need 1 min. When the file has finished transferring, and swipe to display the screen, the progress bar is still present in the screen.

Can not connect to devices with SDK 13 from android 4.4.4

Hi,
I use the NRF-toolbox app's UART feature for connecting to nordic devices.
Android version is 4.4.4 and the device used is a Samsung device.
Everything was working fine when nordic device was using SDK 11, Softdevice S132 v3.
But after migration to SDK 13 and softdevice S132 v4.0.2, connection does not go through.
The connect request succeeds, but service discovery fails with GAT_INTERNAL_ERROR (0x81).
This is followed by a disconnection of the device (GATT_ERROR 0x85).
Same behaviour is seen through NRF-connect as well.

Is support for 4.4.4 android dropped from SDK 13, softdevice S132v4.0.2? Or are there any known issues?

Thanks

Proguard broke UART XML files

Instead of using nice tag names now the 2.5.2 version requires tags and attributes like a, b, c,

This:

-keepattributes ElementArray, ElementList, Root

-keepclassmembers class * {
    @org.simpleframework.xml.* *;
}

needs to be added to proguard rules.

about bonding information is not

At the beginning, the device is bound to the app and runs perfectly; after that, the device reflashes the program, the phone clears the device binding, but the device binding information in the app remains unchanged, causing the device to always fail to match due to binding information. And not connected. How to remove the binding information in the app?

Getting error on descriptor write status 133 with bonded device

hey,
i'm getting some weird behavior with enabling notifications.
i'm developing an app that needs to connect to a ble peripheral automatically, i scan, find the device then bond with - device.createBond().
then i enable notifications from the device on the rx characteristic for the uart service.
this works fine for the first time, but when i use the bonded device to do the same the second time i get
a callback to descriptor write with status 133 sometimes followed by a connection state change callback with state 0 and status 22.

i could not find any info online for what status 133 or 22 mean.

any idea why this is happening? removing the bond makes it work again, but again, only for the first time, i cant complete the flow from a bonded device

Unable to find a matching configuration of project :wear:

Android version is 3.12, gradle version is 4.1

Unable to find a matching configuration of project :wear:

  • Configuration 'debugApiElements':
    • Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
    • Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Apk'.
    • Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
    • Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'.
  • Configuration 'debugMetadataElements':
    • Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
    • Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Metadata'.
    • Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
    • Required org.gradle.api.attributes.Usage 'java-api' but no value provided.
  • Configuration 'debugRuntimeElements':
    • Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
    • Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Apk'.
    • Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
    • Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'.
  • Configuration 'releaseApiElements':
    • Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found incompatible value 'release'.
    • Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Apk'.
    • Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
    • Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'.
  • Configuration 'releaseMetadataElements':
    • Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found incompatible value 'release'.
    • Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Metadata'.
    • Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
    • Required org.gradle.api.attributes.Usage 'java-api' but no value provided.
  • Configuration 'releaseRuntimeElements':
    • Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found incompatible value 'release'.
    • Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found incompatible value 'Apk'.
    • Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
    • Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'.

Sending data slow

Hi,
Why android dfu send data much slower rate than ios,What I can do operations to accelerate the transmission speed?My device is the nexus 4, version 4.4.4

.idea directory

.idea directory should be removed from remote repository.

how to import this into android studio

Hi everyone,

I am having some difficulty to get this project imported into android studio. I have cloned both the nrf toolbox and dfu library from github, I tried to open the project by selecting building.gradle, however android studio keeps prompting me : " Configuration with name 'default' is not found. "

Setup, Android Studio 1.0.1, API 22 with latest build tool 22.0.1.

Any input is appreciated. Thanks.

Compatibility with chromebook

Hi,
I tried using this app (UART) on Chromebook, since android apps through PlayStore are now supported there. I could not discover any services through this app and hence could not communicate with the NRF DK board.
Surprisingly, the NRF-Connect app did not have this problem. NRF-Connect was also taken from PlayStore. But it could find services and could communicate with the DK board.
Why does the "toolbox" app not work while "connect" app does?

error: cannot find symbol variable Request

I am tryonnng to build the library in android studio. However I keep getting this error.I have tried disabling minify, setting sdkversion . Could someone please help me out?

I have the same folder structure as suggested.

some issue with chip

i am using nordic ble but issue it that it get auto disconnected i want to know is there

1: some sleep time
2: how can i debug hardware configuration from chip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.