Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | import yaml |
Vishwanatha Subbanna | bb8fe0b | 2016-11-12 18:29:38 +0530 | [diff] [blame] | 3 | import os |
Vishwanatha Subbanna | ccbdf67 | 2017-01-23 14:39:06 +0530 | [diff] [blame] | 4 | import argparse |
Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 5 | |
| 6 | if __name__ == '__main__': |
Vishwanatha Subbanna | bb8fe0b | 2016-11-12 18:29:38 +0530 | [diff] [blame] | 7 | script_dir = os.path.dirname(os.path.realpath(__file__)) |
Vishwanatha Subbanna | ccbdf67 | 2017-01-23 14:39:06 +0530 | [diff] [blame] | 8 | parser = argparse.ArgumentParser() |
Brad Bishop | 9a6220c | 2017-02-08 13:21:31 -0500 | [diff] [blame] | 9 | parser.add_argument( |
| 10 | "-f", "--filename", |
| 11 | default='led.yaml', |
| 12 | help="Input File Name") |
| 13 | parser.add_argument( |
Brad Bishop | 513f58e | 2017-02-08 13:25:17 -0500 | [diff] [blame] | 14 | "-i", "--input-dir", |
| 15 | dest='inputdir', |
Brad Bishop | 9a6220c | 2017-02-08 13:21:31 -0500 | [diff] [blame] | 16 | default=script_dir, |
| 17 | help="Input directory") |
Brad Bishop | 513f58e | 2017-02-08 13:25:17 -0500 | [diff] [blame] | 18 | parser.add_argument( |
| 19 | '-o', '--output-dir', |
| 20 | dest='outputdir', |
| 21 | default='.', |
| 22 | help='Output directory.') |
| 23 | |
Vishwanatha Subbanna | ccbdf67 | 2017-01-23 14:39:06 +0530 | [diff] [blame] | 24 | args = parser.parse_args() |
| 25 | |
| 26 | # Default to the one that is in the current. |
Brad Bishop | 9a6220c | 2017-02-08 13:21:31 -0500 | [diff] [blame] | 27 | yaml_dir = script_dir |
Vishwanatha Subbanna | ccbdf67 | 2017-01-23 14:39:06 +0530 | [diff] [blame] | 28 | yaml_file = os.path.join(yaml_dir, 'led.yaml') |
| 29 | |
Brad Bishop | 513f58e | 2017-02-08 13:25:17 -0500 | [diff] [blame] | 30 | if args.inputdir: |
| 31 | yaml_dir = args.inputdir |
Vishwanatha Subbanna | ccbdf67 | 2017-01-23 14:39:06 +0530 | [diff] [blame] | 32 | |
| 33 | if args.filename: |
| 34 | yaml_file = os.path.join(yaml_dir, args.filename) |
| 35 | |
| 36 | with open(yaml_file, 'r') as f: |
Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 37 | ifile = yaml.safe_load(f) |
| 38 | |
Brad Bishop | 513f58e | 2017-02-08 13:25:17 -0500 | [diff] [blame] | 39 | with open(os.path.join(args.outputdir, 'led-gen.hpp'), 'w') as ofile: |
Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 40 | ofile.write('/* !!! WARNING: This is a GENERATED Code..') |
| 41 | ofile.write('Please do NOT Edit !!! */\n\n') |
| 42 | |
Vishwanatha Subbanna | ed49073 | 2016-12-20 15:59:29 +0530 | [diff] [blame] | 43 | ofile.write('static const std::map<std::string,') |
| 44 | ofile.write(' std::set<phosphor::led::Layout::LedAction>>') |
| 45 | ofile.write(' systemLedMap = {\n\n') |
Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 46 | for group in ifile.iterkeys(): |
Vishwanatha Subbanna | 8a50a50 | 2017-01-20 18:42:21 +0530 | [diff] [blame] | 47 | # This section generates an std::map of LedGroupNames to std::set |
| 48 | # of LEDs containing the name and properties |
Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 49 | ledset = ifile[group] |
Brad Bishop | 9a6220c | 2017-02-08 13:21:31 -0500 | [diff] [blame] | 50 | ofile.write( |
| 51 | ' {\"' + |
Vishwanatha Subbanna | a1c7f6a | 2017-02-02 14:51:42 +0530 | [diff] [blame] | 52 | "/xyz/openbmc_project/led/groups/" + |
Brad Bishop | 9a6220c | 2017-02-08 13:21:31 -0500 | [diff] [blame] | 53 | group + |
| 54 | '\",{\n') |
Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 55 | |
| 56 | for led_dict, list_dict in ledset.iteritems(): |
Vishwanatha Subbanna | 8a50a50 | 2017-01-20 18:42:21 +0530 | [diff] [blame] | 57 | # Need this to make sure the LED name is printed once |
| 58 | name_printed = False |
Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 59 | for name, value in list_dict.iteritems(): |
Vishwanatha Subbanna | 8a50a50 | 2017-01-20 18:42:21 +0530 | [diff] [blame] | 60 | if group and led_dict and name: |
| 61 | if name_printed is False: |
| 62 | ofile.write(' {\"' + led_dict + '\",') |
| 63 | name_printed = True |
| 64 | if name == 'Action': |
| 65 | ofile.write('phosphor::led::Layout::') |
| 66 | ofile.write(str(value) + ',') |
| 67 | ofile.write('},\n') |
Vishwanatha Subbanna | b21fda7 | 2016-10-17 17:46:37 +0530 | [diff] [blame] | 68 | ofile.write(' }},\n') |
| 69 | ofile.write('};\n') |