xref: /openbmc/phosphor-bmc-code-mgmt/test/create_package/component_image_info_area.cpp (revision 4a053c8e069133436d490aaff12471ee6c9d0677)
1 #include <inttypes.h>
2 #include <unistd.h>
3 
4 #include <cstring>
5 
6 /*
7  * componentLocationOffsetIndex  is for backfilling by the caller
8  */
create_pldm_component_image_info_area_v1_0_0(uint8_t * b,ssize_t i,size_t component_image_size,size_t & componentLocationOffsetIndex)9 ssize_t create_pldm_component_image_info_area_v1_0_0(
10     uint8_t* b, ssize_t i, size_t component_image_size,
11     size_t& componentLocationOffsetIndex)
12 {
13     // Component Image Count
14     b[i++] = 0x1;
15     b[i++] = 0x0;
16 
17     // ComponentImageInformation (Table 5)
18     // (1 for each image)
19 
20     // ComponentClassification
21     b[i++] = 0x1; // this is vendor selected value
22     b[i++] = 0x0;
23 
24     // ComponentIdentifier
25     b[i++] = 0x1; // this is vendor selected value
26     b[i++] = 0x0;
27 
28     // ComponentComparisonStamp
29     b[i++] = 0xff;
30     b[i++] = 0xff;
31     b[i++] = 0xff;
32     b[i++] = 0xff;
33 
34     // ComponentOptions
35     b[i++] = 0x00;
36     b[i++] = 0x00;
37 
38     // RequestedComponentActivationMethod
39     b[i++] = 0b100000; // AC Power Cycle
40     b[i++] = 0x0;
41 
42     // ComponentLocationOffset
43     // (leave blank for now)
44     componentLocationOffsetIndex = i;
45     b[i++] = 0x0;
46     b[i++] = 0x0;
47     b[i++] = 0x0;
48     b[i++] = 0x0;
49 
50     // ComponentSize
51     b[i++] = (component_image_size >> 0) & 0xff;
52     b[i++] = (component_image_size >> 8) & 0xff;
53     b[i++] = (component_image_size >> 16) & 0xff;
54     b[i++] = (component_image_size >> 24) & 0xff;
55 
56     // ComponentVersionStringType
57     b[i++] = 0x1; // type = Ascii
58 
59     const char* buf = (const char*)"mycompversion";
60     // ComponentVersionStringLength
61     b[i++] = strlen(buf);
62 
63     // ComponentVersionString
64     for (ssize_t j = 0; j < (ssize_t)strlen(buf); j++)
65     {
66         b[i++] = buf[j];
67     }
68 
69     return i;
70 }
71