Private:choudhary

From NMSL

Summary of accomplishments by Kaushik Choudhary.

24 August 2010

  • Code moving abandoned. Configuration parameters now accessible in Transmitter (Psisi tables).
  • Started changing function signatures. Will be done in a day.

17 August 2010

  • Updated design document with relevant description of APIs, updated the class diagram and test cases.
  • Performed more integration tests. Found Mpe-fec not working because of missing INT description in PMT.
  • Started moving PSI/SI code to Configuration manager. The above bug will be fixed as part of this.

10 August 2010

  • After Som fixed the build problem last week, I lost a big portion of my changes that had not been committed to svn. So I rewrote all that code again and just finished debugging with Gordon's help today. Now I am able to see the PSISI tables in the ts file when opening with dvbSAM.
  • We can demo the system with one day's preparation.

TODO:

  • Update document with all new changes.
  • Try the new design Som and I came up with for making the update functions work. We will need to move the Psisi class from the transmitter to mtv.

26 July 2010

  • While testing the ts file generated by the code we saw errors in opening the ts file. dvbSAM wasn't able to open it. So I went through the code with Som and Gordon on Thursday and we identified a bug in transmistter in the function to add the PSISI tables to the TS packets was not generating the TS headers. I have been working on writing a new function to generate the headers for the PSISI tables separately with Gordon's help.

19 July 2010

  • Performed more integration tests. Fixed the bug in the transmitter API.
  • While testing the TDT generation test didn't work with dvbSAM. I then found a problem in my Pack() function. I rewrote it and now it generates all tables.
  • The module has been properly integrated with the main repository.
  • Have checked in the code.

TODO:

  • Do more robustness tests.
  • Document the testcases.

12 July 2010

  • Completed implementation of callback functions.
  • Tested PSISI code integrated with transmitter. From my debug prints I see that the tables get generated but there is a segmentation fault in the transmitter API.

TODO:

  • Replace APIs from new config manager in the table constructors.
  • Register callbacks and test once Load/Save functions have been implemented.
  • Fix bug in the transmitter API to get PSISI tables.
  • Finish integration testing.


05 July 2010

  • Fixed all integration errors and tested primary builds.
  • Prototyped and defined callback functions.
  • Worked on the GUI code to add a tab for PSISI settings.

TODO:

  • The callbacks need to be registered in mtv class.
  • The psisi code needs to be updated to interface with the new configuration files.
  • The GUI PSISI settings need to be fetched from the configuration manager.
  • Do more integration tests.

29 June 2010

  • Fixing build errors in code for transmitter APIs. Should be ready in a day.
  • Updated figure 10 on design document.
  • Thought about changes in the GUI and the design for callback functions to update parameters of tables from the GUI.

21 June 2010

  • Continuing to work on APIs in transmitter. Hoping to get it ready for testing this week.
  • Fixed FEC library building problems. Now FEC compiles and runs on most of the recent gcc versions 4.2.4-4.4.3 (tested). * Cleaned up the makefile to remove dependencies on Argtable library. Also modified the makefile to add the path of xsd executable to the PATH environment variable.
  • Modified makefile to link to dynamic xerces and fec libraries. A user does not need sudo permissions to build and execute mtv anymore. A user also does not need to export LD_LIBRARY_PATH.

TODO:

  • Finish APIs and test functionality using dvbSAM.
  • Update API documentation.

14June 2010

  • Finished integration with mtv class. The PSISI table data can now be fetched from the ConfMgr XML files.
  • Wrote unit test cases and tested code. Updating the test plan.
  • Decided on the design of get_psisi_pkt and get_next_psisi_time. Currently writing API code.

TODO:

  • Finish APIs.
  • Merge all code and test.
  • Update API documentation.

7 June 2010

  • INTERFACE INFO:
    • The entire PSISI module consists of eight classes. The Table class contains generic data pertaining to all the PSISI tables that inherit this information. The PSIS class acts as an interface with the rest of the system. The APIs getNextPsisiTime() and getPsisiPkt() are used by the Transmitter to determine whether and when to send any available PSISI table packets.
    • The PSISI tables are able to obtain the configuration parameters from the ConfMgr class (XML file). Once populated they are used by the Transmitter (getpsisi()).


  • Learned how to serialize vectors to write them out to files.
  • Integrated pack function to write section files for each table using default constructor values (set from values taken from existing fatcaps code for now).
  • Figured out how to call PSISI tables from Transmitter.

TODO:

  • Finish getmethod() to create PSI/SI Tables from configuration file.
  • Figure out how to pass the PSI/SI table data back to the transmitter (section files or buffers?)
  • Check in the code.
  • Update document.

31 May 2010

  • Was successfully able to implement the python pack method in C++ using . The data (regardless of type) now gets packed into the requisite binary string of bytes in the network-byte-order (big-endian). Padding has also been taken into consideration.
  • Understood vectors from STL and templates and used it to implement the method.
  • Tested the method's capability of packing native data types into the binary string. Tests were successful.
  • TODO
    • Integrate method into the PSI/SI table generation framework and test the section files with the 'sec2ts' utility.

24 May 2010

  • Implemented classes for the remaining tables - INT, SDT and PAT.
  • Still working on the pack function to pack the table data into sections. Placing the pack section in the main PSI/SI class so it can be used by all the tables.
  • Investigated test cases and found that the only independent test cases will be to use the section file generated from the tables and use it as a parameter for a utility to convert sections files into transport streams (sec2ts).
  • TODO: Test the sections generated with sec2ts for each of INT, SDT, PAT, PMT, TDT and NIT.

17 May 2010

  • Studied Figure 9 on page 21 of "Design Document of Mobile TV Base Station" for use as reference design for implementation of PSI/SI tables in C++.
  • Started learning Python to understand old code for PSI/SI tables implemented in Python.
  • Studied the specification documents for PSI/SI in DVB-h [2,3].
  • Implemented classes for PMT, TDT and NIT Tables (these add up to the classes that were already implemented by Farid).
  • Helped to compile FEC library.
  • Will implement C++ equivalent of Python's pack method in the Psisi class to avoid duplication in each of the tables.
  • TODO
    • Finish implementation of all classes for all the tables for PSI and SI.
    • Implement C++ equivalent for Python's pack method.
    • Perform unit testing before integrating into the main source branch.
    • Perform integration testing.


References

  1. Overview of PSI/SI
  2. DVB-H 300 468 SI Specification
  3. IP Datacast over DVB-H:PSI/SI