Search code examples
c#cordovauwpcordova-pluginscordova-win10

WiFI Direct for cordova windows platform


I need to connect windows devices using wifi direct. Our application is cordova application. Below is the code for wifi direct advertising that I wrote. Complete code executing without error and m_Publisher status is changed after executing start(). But other devices still can't see the WiFi Direct device.

function enableStartWiFiDirect() {

    var Api_DeviceName = Windows.Networking.Proximity.PeerFinder.displayName;
    m_Publisher = Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisher();
    m_Listener = new Windows.Devices.WiFiDirect.WiFiDirectConnectionListener();

    m_Listener.addEventListener("onconnectionrequested", onConnectionRequested);

    m_Publisher.advertisement.IsAutonomousGroupOwnerEnabled = false;

    m_Publisher.advertisement.ListenStateDiscoverability =
        Windows.Devices.WiFiDirect.WiFiDirectAdvertisementListenStateDiscoverability.Normal;

    var IE = new Windows.Devices.WiFiDirect.WiFiDirectInformationElement();

    // IE blob
    var dataWriter = new Windows.Storage.Streams.DataWriter();
    dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
    dataWriter.writeString(Api_DeviceName);
    IE.Value = dataWriter.detachBuffer();


    // OUI
    var dataWriterOUI = new Windows.Storage.Streams.DataWriter();
    dataWriterOUI.writeBytes([0xAA, 0xBB, 0xCC]);//(Globals.CustomOui);
    IE.Oui = dataWriterOUI.detachBuffer();

    IE.ouiType = 12;//(byte)Api_DeviceName.Length;

    m_Publisher.advertisement.informationElements.push(IE);

    m_Publisher.start();
    console.log('WiFi Direct Started');

    return "Advertisment started sucessfully";
} 

Hope someone can help me with these problem. Any help would be greatly appreciated


Solution

  • I could start WiFi Direct advertisement from below in cordova app.

    startAdvertisment: function (successCallback, errorCallback, args) {
    
            if (publisher === null) {
                publisher = Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisher();
            }
    
            if (listener===null) {
                listener = new Windows.Devices.WiFiDirect.WiFiDirectConnectionListener();
    
                listener.onconnectionrequested = OnConnectionRequested;
            }
            publisher.advertisement.isAutonomousGroupOwnerEnabled = false;
    
            publisher.advertisement.listenStateDiscoverability =
                Windows.Devices.WiFiDirect.WiFiDirectAdvertisementListenStateDiscoverability.normal;
    publisher.start();
    
        }