meta-facebook/meta-galaxy100/recipes-utils/mkeeprom/files/mkeeprom.h (64 lines of code) (raw):
/*
* Copyright 2014-present Facebook. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef FBW_EEPROM_H
#define FBW_EEPROM_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#define FBW_EEPROM_F_MAGIC 2
#define FBW_EEPROM_F_VERSION 1
#define FBW_EEPROM_F_PRODUCT_NAME 12
#define FBW_EEPROM_F_PRODUCT_NUMBER 8
#define FBW_EEPROM_F_ASSEMBLY_NUMBER 12
#define FBW_EEPROM_F_FACEBOOK_PCB_NUMBER 12
#define FBW_EEPROM_F_FACEBOOK_PCBA_NUMBER 12
#define FBW_EEPROM_F_ODM_PCB_NUMBER 13
#define FBW_EEPROM_F_ODM_PCB_SERIAL 13
#define FBW_EEPROM_F_PRODUCT_STATE 1
#define FBW_EEPROM_F_PRODUCT_VERSION 1
#define FBW_EEPROM_F_PRODUCT_SUBVERSION 1
#define FBW_EEPROM_F_PRODUCT_SERIAL 13
#define FBW_EEPROM_F_PRODUCT_ASSET 12
#define FBW_EEPROM_F_SYSTEM_MANUFACTURER 8
#define FBW_EEPROM_F_SYSTEM_MANU_DATE 4
#define FBW_EEPROM_F_PCB_MANUFACTURER 8
#define FBW_EEPROM_F_ASSEMBLED 8
#define FBW_EEPROM_F_LOCAL_MAC 12
#define FBW_EEPROM_F_EXT_MAC_BASE 12
#define FBW_EEPROM_F_EXT_MAC_SIZE 2
#define FBW_EEPROM_F_LOCATION 8
#define FBW_EEPROM_F_CRC8 1
struct wedge_eeprom_st {
/* version number of the eeprom. Must be the first element */
uint16_t fbw_magic;
/* version number of the eeprom. Must be the first element */
uint8_t fbw_version;
/* Product Name */
char fbw_product_name[FBW_EEPROM_F_PRODUCT_NAME];
/* Top Level 20 - Product Part Number: XX-XXXXXX */
char fbw_product_number[FBW_EEPROM_F_PRODUCT_NUMBER];
/* System Assembly Part Number XXX-XXXXXX-XX */
char fbw_assembly_number[FBW_EEPROM_F_ASSEMBLY_NUMBER];
/* Galaxy100 PCB Part Number: XXX-XXXXXXX-XX */
char fbw_facebook_pcba_number[FBW_EEPROM_F_FACEBOOK_PCBA_NUMBER];
/* Galaxy100 PCB Part Number: XXX-XXXXXXX-XX */
char fbw_facebook_pcb_number[FBW_EEPROM_F_FACEBOOK_PCB_NUMBER];
/* ODM PCB Part Number: XXXXXXXXXXXX */
char fbw_odm_pcb_number[FBW_EEPROM_F_ODM_PCB_NUMBER];
/* ODM PCB Serial Number: XXXXXXXXXXXX */
char fbw_odm_pcb_serial[FBW_EEPROM_F_ODM_PCB_SERIAL];
/* Product Production State */
uint8_t fbw_production_state;
/* Product Version */
uint8_t fbw_product_version;
/* Product Sub Version */
uint8_t fbw_product_subversion;
/* Product Serial Number: XXXXXXXX */
char fbw_product_serial[FBW_EEPROM_F_PRODUCT_SERIAL];
/* Product Asset Tag: XXXXXXXX */
char fbw_product_asset[FBW_EEPROM_F_PRODUCT_ASSET];
/* System Manufacturer: XXXXXXXX */
char fbw_system_manufacturer[FBW_EEPROM_F_SYSTEM_MANUFACTURER];
/* System Manufacturing Date: mm-dd-yy */
//char fbw_system_manufacturing_date[FBW_EEPROM_F_SYSTEM_MANU_DATE];
//uint32_t fbw_system_manufacturing_date;
uint16_t fbw_system_manufacturing_year;
uint8_t fbw_system_manufacturing_month;
uint8_t fbw_system_manufacturing_day;
/* PCB Manufacturer: XXXXXXXXX */
char fbw_pcb_manufacturer[FBW_EEPROM_F_PCB_MANUFACTURER];
/* Assembled At: XXXXXXXX */
char fbw_assembled[FBW_EEPROM_F_ASSEMBLED];
/* Local MAC Address */
uint8_t fbw_local_mac[FBW_EEPROM_F_LOCAL_MAC];
/* Extended MAC Address */
uint8_t fbw_mac_base[FBW_EEPROM_F_EXT_MAC_BASE];
/* Extended MAC Address Size */
uint16_t fbw_mac_size;
/* Location on Fabric: "LEFT"/"RIGHT", "WEDGE", "LC" */
char fbw_location[FBW_EEPROM_F_LOCATION];
/* CRC8 */
uint8_t fbw_crc8;
}__attribute__ ((__packed__));
//int wedge_eeprom_parse(const char *fn, struct wedge_eeprom_st *eeprom);
void dump_eeprom(struct wedge_eeprom_st *eeprom);
void parse_command(char* cmd, char* c);
int read_text(char* in);
int write_binary(char* out);
#ifdef __cplusplus
}
#endif
#endif