This section describes the DB schema defined for storing the test results. The reporting module generates the test report from database entries stored in this schema.



Product Table

The following table describes the values in the report data retrieved from Product table.

Column Type
ProductID PK, int, not null
ProductName nvarchar(20), null
MachineNumber nvarchar(20), null
SoftwareVersion nvarchar(30), null



StaticData Table

This table stores the standard values against which actual test data is compared.

Primary Key: HeaderName, ProductID

Foreign Key: ProductID

The following table describes the values in the report data retrieved from the StaticData table.

Column Type
HeaderName PK, nvarchar(4000), not null
ProductID PK, FK, int, not null
StandardValue int, null
UpperLimit int, null
LowerLimit int, null



TestResult Table

This table represents all the data retrieved from the tests performed during Draw Test, RF Test and Personalization. Users can analyze it further based on interpretation understanding (Refer to the Report Data Interpretation section).

When Draw test is performed on Milli units, the following columns are populated:

  • MacAddress
  • DrawTestResult


When an RF test is performed on Milli units, the following columns are populated:

  • MacAddress
  • PacketSend,
  • PacketReceive,
  • RFTestStatus,
  • RSSI_Max,
  • RSSI_Type,
  • RSSI_Min,
  • RFTest_Failure_Reason


When Personalization is performed on the Milli units, the following columns are populated:

  • MacAddress
  • PersonalizeStatus,
  • Personalize_Failure_Reason


Primary Key: TestID, MacAddress

Foreign Key: ProductID

The following table describes the values in the report data retrieved from the TestResult table.

Name Type
TestID int
MacAddress nvarchar (20)
SerialNumber nvarchar (50)
ProductID int
DateTime datetime
RFTestStatus nvarchar (20)
PacketSend int
PacketReceive int
RSSI_Max int
RSSI_Avg int
RSSI_Min int
RFTest_Failure_Reason nvarchar (1000)
PersonalizeStatus nvarchar (20)
DrawTestResult nvarchar (20)
Personalize_Failure_Reason nvarchar (1000)


ER Diagram

The diagram below depicts the entity- relationship diagram between the tables defined in the DB schema of the Reporting Module of the Milli Manufacturing Tools Application.


DB Utils APIs

The DBHelper class in DBUtils.dll implements the following APIs, which are used to retrieve data fields for the Draw Test, RFTest and Personalize operations.

AddTestResult(RMATestData objRMAData)

Signature: public static void AddTestResult(RMATestData objRMAData)

This API inserts RMA test results into database. It takes DBUtils.RMATestData object as a parameter.


AddTestResult(PersonalizeData objPerData)

Signature: public static void AddTestResult(PersonalizeData objPerData)

This API inserts the personalization results into the database. It takes DBUtils.PersonalizeData object as a parameter.


AddTestResult(DrawTestData objPerData)

Signature: public static void AddTestResult(DrawTestData objPerData)

This API inserts the Draw Test results into database. It takes DBUtils.DrawTestData object as a parameter.


RMATestData GetTestDataByMac(string macAddress)

Signature: public static RMATestData GetTestDataByMac(string macAddress)

This API returns the last test result of Milli and uses the passed MAC address as a parameter.


GetProductByProductID(int productID)

Signature: public static Product GetProductByProductID(int productID)

This API returns product details of the product ID passed in parameter.



Signature: public static List<Product> GetProductList()

This API retrieves all the available products in the database.


GetLimitsByProductID(int productID)

Signature: public static List<StaticData> GetLimitsByProductID(int productID)

This API returns the Limit details of product ID. It takes product ID as an argument and returns the standard value, standard upper limit, and standard lower limit configured for the product.


GetTestResults(DateTime startDate, DateTime endDate, intproductID)

Signature: public static List<RMATestData> GetTestResults(DateTime startDate, DateTime endDate, int productID)

This API returns the test result of Draw Test, RF test and personalization within the specified range and product id.Report Data Interpretation.


UpdateStaticData(List<StaticData> limitValues) 

Signature: public static bool UpdateStaticData(List<StaticData> limitValues) 

 This API returns boolean value as True if the data was updated successfully and boolean value as False if there is any error while updating the database. 


Data Population

In Milli Manufacturing Tools application, Draw Test, RF Test and Personalization is a single process which includes three sub steps:

  • STEP1: Draw Test
  • STEP2: RF Test
  • STEP3: Personalization


The following points describe the process for how data is populated in the report.

  • Each Milli unit has a unique MAC address. Multiple iterations for the same Milli are treated as unique entries in the report.
  • If only STEP1 is performed on Milli, the JUDGE column displays STEP2: RF Test. This indicates that the process failed at Step 2. Also, STEP2: RFTest and STEP3: DrawTest columns will store a null value. In this case, the NG count increments by 1.
  • If both STEP1 and STEP2 were performed successfully and STEP3 failed, the JUDGE column displays: STEP3: Personalization. This indicates the process failed at Step 3. The STEP3: Personalization column will store a null value. In this case, the NG count increments by 1.
  • If all the steps are successful, the JUDGE column displays OK. The count in the OK column increments by 1 and the NG column does not change.
  • If STEP1 is interrupted in between and fails, the JUDGE column displays Step1. This indicates the process failed at STEP1. Also, the STEP1: Draw Test, STEP2: RF Test and STEP3: Personalization columns store a null value. In this case, the NG count increments by 1.