First Week as Intern

Started off my first week as an intern here at AESTE. Before coming here I had less than 2 weeks to study my pre-internship materials, as I had applied here late. First week involved studying using Git and also trying to understand the pre-internship study materials that I was given. Among some of the interesting things I learned was that in C coding, typedef can be used to create a fake type, which seems really useful. Confusing bit were pointers and structs, Read more…

Clarification on Wt Session Timeout

If you used Wt, you should be aware of the  session timeout set in wt_config.xml. I think this ‘feature’ requires more explanation on it rather than When a session remains inactive for this amount of time, it is cleaned up After experimenting much with the timeout, it does not work as expected. And to summarize on the behavior, it is unreliable. The session timeout never  triggers on time if the browser is closed. It is actually explained in detail by Koen in Read more…

Leveraging on WResources

I continued to move all storage related actions to the back-end. The idea is to have a clear separation of front-end (consisting of widgets and callbacks) and back-end (handling of requests). When a complete model is built, the building blocks can be easily replicated and altered to cater for other services. Troubleshooting becomes a breeze too when things are built in an orderly fashion. Exploiting the refresh_token Since the discovery of the refresh_token, things are working out great. You can Read more…

Final week at Aeste

This week I am still working on the data corruption error when testing the write operations of each modules together. It took me quite a while to find out which part of JavaScript went wrong as I have to analyze every line of JavaScript codes related. The error occurs in the convertAddress function. The value ORed with the address of register is incorrect. This results in wrong value returned when the function is called and eventually generated wrong address value. My Read more…

Back-end Caching

Caching So.. this week I focused more on building the file caching mechanism that fully uses the server’s back-end. I am using a write-back approach to handle the caching process. Initially, a fresh copy of the project will be downloaded and stored in local cache. The file will be sent to another back-end and will be open for edit. Changes in the CodeMirror editor or the synthesis completion will both initiate a request (using back-end) and sends the latest file to Read more…

Digging Deeper into Bug

This week I dig deeper into identifying the TCPIP Stack bug. Ideal Case Based on the document UG380 and XAPP502, ‘init_b’ of FPGA should be HIGH (reading from PIC32), if it was LOW during configuration means there is an error,  ‘init_b’ can also be pulled LOW to delay configuration, in other words ‘init_b’ is a multipurpose pin for FPGA. Even after configuration ‘init_b’ will still remain HIGH. Experiment Result Therefore at the start of my state machine (PIC32), by enabling Read more…

Display Data on Schematic

This week I tried to show the data values on the simulator schematic when performing data transmission with UART, MSPI or I2C. When successfully reading or writing data, user will be allowed to see that the data in hexadecimal values are displayed beside the related ports of the module. To achieve this, I first created a text tag in the SVG JavaScript with a unique class name corresponding to the port. Next I created a new function in each JavaScript module Read more…

TCPIP Stack Bug

This week I continue trying to figure out how to ‘download’ a huge file with TCP protocol. Set up a USB cdc com port to ease debugging. Fixing ‘init_b’ staying LOW. TCP Server looping READ socket To be able to ‘download’ or I should say read a file being uploaded by a CLIENT is to loop the socket READ state. Continuously looping the READ & WRITE socket, both CLIENT and TCP Server (PIC32) will automatically communicate packet by packet of Read more…

More Improvements

More on cURLpp I talked about cURLpp in my last post. There’s much more to it than just uploading files to Google Drive endpoints. A few things I discovered is :- curlpp::infos This allows certain response info to be obtained directly. There are a list of info obtained, which can be referred from “curlpp/include/Infos.hpp”. A more useful one would be ResponseCode, which is great to have. After request.perform(), long responseCode; curlpp::infos::ResponseCode::get(req,responseCode); and you can use the responseCode as you please. WriteStream There Read more…

Null Termination Issue

This week I have been trying to make the read and readstring function working in the simulator. There are two main problems: Read function can only return the same data byte every time it is called. For example, when a string “HELLO” is written to the data register, read function can only return the last character of the string, which is ‘O’ or 79 in ASCII. Readstring function continued to read each byte of data without stopping. This is because Read more…