ESP8266 - Error Server HandleClient ketika pakai DMD2

Halo semuanya, kali ini saya akan membahas tentang error yang saya temukan ketika melakukan compiling ESP8266 dengan Arduino IDE. Errornya terjadi ketika saya ingin menjalankan handling server (setelah membuat akses poin) menggunakan library ESP8266WebServer. Disaat bersamaan, saya menggunakan library DMD2.

Sebelum masuk kesana, saya akan memberikan informasi singkat mengenai alat yang saya gunakan. Saya menggunakan PC dengan OS Windows 10 untuk melakukan compiling firmware. IDE yang digunakan adalah Arduino IDE versi 1.8.9. Dan versi board ESP8266 (versi framework) yang digunakan adalah 2.7.4. 

Ceritanya berawal ketika saya mau membuat fungsi menampilkan pesan dengan DMD2 yang bisa diatur menggunakan WiFi, dalam hal ini adalah akses poin dari ESP8266. DMD2 adalah sebuah library yang mengijinkan kita untuk mengendalikan panel running text P10. Library DMD2 yang saya gunakan dalah versi 0.0.3 dan bisa di download pada library manager Arduino IDE. Untuk dapat mengirimkan data, saya menghidupkan WiFi yang ada di ESP8266 dan menggunakan WiFi tersebut sebagai akses poin. Saat saya hendak mengaktifkan server handlernya, dengan syntax server.handleClient();, saya mendapat error yang bukan terjadi di coding saya. Berikut adalah potongan error yang saya dapatkan. Hanya saya tampilkan bagian bawahnya saja karena bagian ini yang menjadi kunci penyelesaian errornya.

c:\users\xxx\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2\bits\move.h:166:5: note: void std::swap(_Tp&, _Tp&) [with _Tp = HTTPUpload*]
     swap(_Tp& __a, _Tp& __b)
     ^

In file included from D:\xxx\xxx\xxx\xxx.ino:2:0:
C:\Users\xxx\Documents\Arduino\libraries\DMD2/DMD2.h:44:41: note: void swap(T&, T&) [with T = HTTPUpload*]

 template<typename T> static inline void swap(T &a, T &b)
                                         ^

exit status 1
Error compiling for board Generic ESP8266 Module.
 

Pesan error di atas memberitahu kita jika terdapat dua tempat yang mendeklarasikan fungsi swap. Fungsi swap yang satu ada di core code ESP8266, yang saya yakini code untuk membangun webserver. Sedangkan fungsi swap yang satunya lagi ada di library DMD2. 

Pada kasus ini, cara solvingnya cukup mudah, yaitu dengan mengubah nama fungsi swap yang ada di library DMD2. Kita pergi ke file yang di maksud pada pesan error, tempat kode dari library disimpan. Kemudian ganti nama fungsi swap menjadi misalnya swapDmd atau  swap1 atau nama lainnya. Jalan lupa ganti nama fungsinya juga di tempat yang memanggil fungsi tersebut. Jika sudah, langsung compile ulang kode kita dan kita tidak ada menemukan error tersebut lagi.

Sekian sharing kali ini. Semoga membantu bagi teman-teman yang mengalami hal sama seperti ini. Hal ini juga bisa digunakan pada perpaduan library lainnya. Selamat membaca dan memcoba.


Salam Share,


Funtastic Share

Komentar