Code Completion Feature

So… I had a stressful time finding a serious bug in my Wt application.  Luckily, I was able to narrow the cause down. The crash happened whenever a new user approved the storage service for the first time. And damn it, it was caused by not deferRendering the WApplication after sending a request to Google Drive. At least, the dummy accounts I created to track down this bug didn’t go to waste. Code Completion feature I am slowly inching my Read more…

Fixing Simulator Bug

This week, I have been working mainly on the simulator. Things just don’t work when they are combined 😂 😂 , especially when it is a combination of 3 persons code. It is a critical issue that the simulator is not working. Mainly because I did not understand what had been done by them previously. I was struggling with the simulation bug, because I just can’t simply change the code because there are parts which is not my work. It was a great Read more…

Emulating ADC

This week I did some programming on PIC32 ADC and SPI functions. The goal is to transfer ADC value from PIC through SPI to a FPGA chip. FPGA chip will act as a ‘Master’ while PIC32 will be the ‘Slave’. I will be coding for PIC32 only therefore the following will only be applicable to PIC32 with MPLABX IDE and Harmony Library. Examples for PIC32 ADC and SPI Microchip Harmony provide several examples on initialization of ADC and SPI, follow the Read more…

CodeMirror and Me

Work progress has been slow this week as I spent my time learning about the code completion feature in the code editor. The previous intern has done some work on it with basic functions.  However, there is much to be done until it becomes fully operable and up to my boss’ expectation. Starting with Clang I started with examining the clang code-completion which was implemented. It’s amazing to see how it works by returning related keywords from the C++ library. Read more…

Kill the Zombie

This week, my task is to create a cache system for the FPGA synthesis and implementation process, and to kill the previous synthesis process. The cache system would be useful if someone replicates or reuse their design. This saves the processing power and time, where the synthesized file would be ready immediately. Caching the file by using cryptographic hash function, is pretty interesting. I get to see the power of these functions and why they are so popular to be Read more…

PHP Server

This week I do some final touch to the PCB board design. (Spartan6 TQFP, PIC32, HC-05). And then I get my hands on to some programming. My goal is to make a Php server that is able to be ping from my Wt::Client(Ajax) that I previously done. The idea is the same with using a PIC32 MCU to act as a ‘Server’ but now is to use PHP on Linux. Surprisingly the C network programming knowledge that I learn/implemented on microcontroller Read more…

Bug Hunting in Wt

This has been a cool week, not the weather though, because I managed to solve problems instead of creating more. Thanks to Dr. Shawn’s suggestion, I’ve started using valgrind to test my code. It turns out to be such a gem. Not having the proper fundamentals, I didn’t know such a thing actually existed. Testing out Valgrind There were so many instances where I spent hours trying to discover segmentation fault in my application. Seg fault is even harder to Read more…

Designing a new PCB Board

This week I finish drawing my PCB design for a new board using Spartan 6 TQFP packaging and PIC32MZ. Also added a bluetooth module (HC-05) onto the new board. In comparison most of the component’s footprint for this new board is exactly the same with the previous board, only this time I decided to make some changes on the capacitors’ footprint.  For Spartan 6 – 144pin only requires 4.7μF and 0.47μF capacitor value. And from ‘table 2-2 of ug393‘ stated that these Read more…

Automate Bitstream: Part 3

Continued from last week, I finally manage to automate the bitstream generation. Good news that I have also fixed the problem that causes the hanging of the web application. The hanging is mainly caused by the usage of Wt::WApplication::instance()->deferRendering, because freezes the user interface. The doJavaScript() Problem What surprised me this week was the usage of doJavaScript() in Wt. Apparently, after removing the Wt::WApplication::instance()->deferRendering, it does not work well, unless the widgets are clicked on. As I refer from the documentation, it Read more…

Code cleanup and adding features

I have been removing a lot of old JSON stuff which is now replaced with Wt::Dbo. So far, using Wt::Dbo has offered so much of convenience when adding, modifying or querying database objects, as long as you create the Wt::Dbo::Session using your database file. insertWidget at specified positions So I have taken the advice from Dr. Shawn to make some improvements on my project. When adding new files into the application, the newest file should appear at the first position. Read more…