android: implement getHardwareAudioFormat signal

Change-Id: Ibe5fef93d4612089191501e5a01f0154d92f0a84
diff --git a/ring-android/app/src/main/java/cx/ring/model/Codec.java b/ring-android/app/src/main/java/cx/ring/model/Codec.java
index 72cc8a6..58cc027 100644
--- a/ring-android/app/src/main/java/cx/ring/model/Codec.java
+++ b/ring-android/app/src/main/java/cx/ring/model/Codec.java
@@ -115,8 +115,8 @@
                 + "Channels: " + channels;
     }
 
-    public CharSequence getPayload() {
-        return Long.toString(payload);
+    public Long getPayload() {
+        return payload;
     }
 
     public CharSequence getName() {
diff --git a/ring-android/app/src/main/java/cx/ring/service/ConfigurationManagerCallback.java b/ring-android/app/src/main/java/cx/ring/service/ConfigurationManagerCallback.java
index cf691ab..6217a7e 100644
--- a/ring-android/app/src/main/java/cx/ring/service/ConfigurationManagerCallback.java
+++ b/ring-android/app/src/main/java/cx/ring/service/ConfigurationManagerCallback.java
@@ -73,14 +73,11 @@
         mService.sendBroadcast(intent);
     }
 
-    public IntVect configGetHardwareAudioFormat(){
-        IntVect result = new IntVect();
-
+    @Override
+    public void getHardwareAudioFormat(IntVect ret){
         OpenSlParams audioParams = OpenSlParams.createInstance(mService);
-        result.add(audioParams.getSampleRate());
-        result.add(audioParams.getBufferSize());
-
-        return result;
+        ret.add(audioParams.getSampleRate());
+        ret.add(audioParams.getBufferSize());
     }
 
 }
diff --git a/ring-android/app/src/main/java/cx/ring/service/SipService.java b/ring-android/app/src/main/java/cx/ring/service/SipService.java
index 575189c..820b001 100644
--- a/ring-android/app/src/main/java/cx/ring/service/SipService.java
+++ b/ring-android/app/src/main/java/cx/ring/service/SipService.java
@@ -59,7 +59,12 @@
     private Runnable pollEvents = new Runnable() {
         @Override
         public void run() {
-            Ringservice.pollEvents();
+            getExecutor().execute(new SipRunnable() {
+                @Override
+                protected void doRun() throws SameThreadException {
+                    Ringservice.pollEvents();
+                }
+            });
             handler.postDelayed(this, POLLING_TIMEOUT);
         }
     };
@@ -69,7 +74,7 @@
     protected HistoryManager mHistoryManager;
     protected MediaManager mMediaManager;
 
-    private HashMap<String, Conference> mConferences = new HashMap<String, Conference>();
+    private HashMap<String, Conference> mConferences = new HashMap<>();
     private ConfigurationManagerCallback configurationCallback;
     private CallManagerCallBack callManagerCallBack;
 
@@ -201,12 +206,11 @@
         public void execute(Runnable task) {
             // TODO: add wakelock
             Message.obtain(SipServiceExecutor.this, 0/* don't care */, task).sendToTarget();
-            Log.w(TAG, "SenT!");
+            //Log.w(TAG, "SenT!");
         }
 
         @Override
         public void handleMessage(Message msg) {
-            Log.w(TAG, "handleMessage");
             if (msg.obj instanceof Runnable) {
                 executeInternal((Runnable) msg.obj);
             } else {
@@ -535,7 +539,7 @@
         // Hashmap runtime cast
         @Override
         public void setAccountDetails(final String accountId, final Map map) {
-            final StringMap swigmap = new StringMap(map);
+            final StringMap swigmap = StringMap.toSwig(map);
 
             getExecutor().execute(new SipRunnable() {
                 @Override
@@ -585,7 +589,7 @@
                 }
             }
 
-            final StringMap swigmap = new StringMap(map);
+            final StringMap swigmap = StringMap.toSwig(map);
 
             AddAccount runInstance = new AddAccount(swigmap);
             getExecutor().execute(runInstance);
@@ -983,9 +987,8 @@
                     for (int i = 0; i < payloads.size(); ++i) {
                         boolean isActive = false;
                         for (Codec co : results) {
-                            if (co.getPayload().toString().contentEquals(String.valueOf(payloads.get(i))))
+                            if (co.getPayload() == payloads.get(i))
                                 isActive = true;
-
                         }
                         if (isActive)
                             continue;
@@ -1178,7 +1181,7 @@
                     Log.i(TAG, "SipService.setActiveAudioCodecList() thread running...");
                     UintVect list = new UintVect();
                     for (Object codec : codecs) {
-                        list.add((Integer) codec);
+                        list.add((Long) codec);
                     }
                     Ringservice.setActiveCodecList(accountID, list);
                 }
diff --git a/ring-android/app/src/main/java/cx/ring/utils/SwigNativeConverter.java b/ring-android/app/src/main/java/cx/ring/utils/SwigNativeConverter.java
index 3793644..0aa76e6 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/SwigNativeConverter.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/SwigNativeConverter.java
@@ -54,7 +54,7 @@
         VectMap toReturn = new VectMap();
 
         for (HashMap<String, String> aTodecode : todecode) {
-            toReturn.add(new StringMap(aTodecode));
+            toReturn.add(StringMap.toSwig(aTodecode));
         }
         return toReturn;
     }
@@ -76,7 +76,7 @@
     }
 
     public static ArrayList<String> convertSwigToNative(StringVect vector) {
-        ArrayList<String> toReturn = new ArrayList<String>();
+        ArrayList<String> toReturn = new ArrayList<>();
         for (int i = 0; i < vector.size(); ++i) {
             toReturn.add(vector.get(i));
         }
diff --git a/ring-android/app/src/main/jni/configurationmanager.i b/ring-android/app/src/main/jni/configurationmanager.i
index 6374257..e6ae5f6 100644
--- a/ring-android/app/src/main/jni/configurationmanager.i
+++ b/ring-android/app/src/main/jni/configurationmanager.i
@@ -49,7 +49,7 @@
     virtual void certificateStateChanged(const std::string& /*account_id*/, const std::string& /*certId*/, const std::string& /*state*/){}
 
     virtual void errorAlert(int alert){}
-    virtual std::vector<int32_t> configGetHardwareAudioFormat(void){}
+    virtual void getHardwareAudioFormat(std::vector<int32_t>* /*params_ret*/){}
 };
 %}
 
@@ -186,5 +186,5 @@
     virtual void certificateStateChanged(const std::string& /*account_id*/, const std::string& /*certId*/, const std::string& /*state*/){}
 
     virtual void errorAlert(int alert){}
-    virtual std::vector<int32_t> configGetHardwareAudioFormat(void){}
+    virtual void getHardwareAudioFormat(std::vector<int32_t>* /*params_ret*/){}
 };
\ No newline at end of file
diff --git a/ring-android/app/src/main/jni/jni_interface.i b/ring-android/app/src/main/jni/jni_interface.i
index 153200b..bb32d6d 100644
--- a/ring-android/app/src/main/jni/jni_interface.i
+++ b/ring-android/app/src/main/jni/jni_interface.i
@@ -63,62 +63,64 @@
 
 namespace std {
 
-    %typemap(javacode) map<string, string> %{
-      public $javaclassname(java.util.Map<String,String> in) {
-        for (java.util.Map.Entry<String, String> entry : in.entrySet()) {
-          this.set(entry.getKey(), entry.getValue());
-        }
-      }
-      public java.util.Map<String,String> toNative() {
-        java.util.Map<String,String> out = new java.util.HashMap<String,String>();
-        StringVect keys = keys();
-        for (String s : keys)
-          out.put(s, get(s));
-        return out;
-      }
-    %}
-    %extend map<string, string> {
-        std::vector<std::string> keys() const {
-            std::vector<std::string> k;
-            k.reserve($self->size());
-            for (const auto& i : *$self)
-                k.push_back(i.first);
-            return k;
-        }
+%typemap(javacode) map<string, string> %{
+  public static $javaclassname toSwig(java.util.Map<String,String> in) {
+    $javaclassname n = new $javaclassname();
+    for (java.util.Map.Entry<String, String> entry : in.entrySet()) {
+      n.set(entry.getKey(), entry.getValue());
     }
-    %template(StringMap) map<string, string>;
-
-    %typemap(javabase) vector<string> "java.util.AbstractList<String>"
-    %typemap(javainterface) vector<string> "java.util.RandomAccess"
-    %extend vector<string> {
-      value_type set(int i, const value_type& in) throw (std::out_of_range) {
-        const std::string old = $self->at(i);
-        $self->at(i) = in;
-        return old;
-      }
-      bool add(const value_type& in) {
-          $self->push_back(in);
-          return true;
-      }
-      int32_t size() const {
-        return $self->size();
-      }
+    return n;
+  }
+  public java.util.Map<String,String> toNative() {
+    java.util.Map<String,String> out = new java.util.HashMap<String,String>();
+    StringVect keys = keys();
+    for (String s : keys)
+      out.put(s, get(s));
+    return out;
+  }
+%}
+%extend map<string, string> {
+    std::vector<std::string> keys() const {
+        std::vector<std::string> k;
+        k.reserve($self->size());
+        for (const auto& i : *$self)
+            k.push_back(i.first);
+        return k;
     }
-    %template(StringVect) vector<string>;
+}
+%template(StringMap) map<string, string>;
 
-    %typemap(javacode) vector< map<string,string> > %{
-      public java.util.ArrayList<java.util.Map<String, String>> toNative() {
-        java.util.ArrayList<java.util.Map<String, String>> out = new java.util.ArrayList<>();
-        for (int i = 0; i < size(); ++i)
-          out.add(get(i).toNative());
-        return out;
-      }
-    %}
-    %template(VectMap) vector< map<string,string> >;
-    %template(IntegerMap) map<string,int>;
-    %template(IntVect) vector<int32_t>;
-    %template(UintVect) vector<uint32_t>;
-    %template(Blob) vector<uint8_t>;
+%typemap(javabase) vector<string> "java.util.AbstractList<String>"
+%typemap(javainterface) vector<string> "java.util.RandomAccess"
+%extend vector<string> {
+  value_type set(int i, const value_type& in) throw (std::out_of_range) {
+    const std::string old = $self->at(i);
+    $self->at(i) = in;
+    return old;
+  }
+  bool add(const value_type& in) {
+    $self->push_back(in);
+    return true;
+  }
+  int32_t size() const {
+    return $self->size();
+  }
+}
+%template(StringVect) vector<string>;
+
+%typemap(javacode) vector< map<string,string> > %{
+  public java.util.ArrayList<java.util.Map<String, String>> toNative() {
+    java.util.ArrayList<java.util.Map<String, String>> out = new java.util.ArrayList<>();
+    for (int i = 0; i < size(); ++i)
+      out.add(get(i).toNative());
+    return out;
+  }
+%}
+%template(VectMap) vector< map<string,string> >;
+%template(IntegerMap) map<string,int>;
+%template(IntVect) vector<int32_t>;
+%template(UintVect) vector<uint32_t>;
+%template(Blob) vector<uint8_t>;
 }
 
 /* not parsed by SWIG but needed by generated C files */
@@ -194,6 +196,7 @@
         exportable_callback<ConfigurationSignal::CertificatePathPinned>(bind(&ConfigurationCallback::certificatePathPinned, confM, _1, _2 )),
         exportable_callback<ConfigurationSignal::CertificateExpired>(bind(&ConfigurationCallback::certificateExpired, confM, _1 )),
         exportable_callback<ConfigurationSignal::CertificateStateChanged>(bind(&ConfigurationCallback::certificateStateChanged, confM, _1, _2, _3 )),
+        exportable_callback<ConfigurationSignal::GetHardwareAudioFormat>(bind(&ConfigurationCallback::getHardwareAudioFormat, confM, _1 )),
     };
 
 /*