blob: 1613ecbbe42f3946c5f55a13fe0e0a24be7d21d0 [file] [log] [blame]
# Copyright (c) 2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
from enum import Enum, auto
from .gn import GnBuilder
class stm32App(Enum):
LIGHT = auto()
def ExampleName(self):
if self == stm32App.LIGHT:
return 'lighting-app'
else:
raise Exception('Unknown app type: %r' % self)
def AppNamePrefix(self):
if self == stm32App.LIGHT:
return 'chip-stm32-lighting-example'
else:
raise Exception('Unknown app type: %r' % self)
def FlashBundleName(self):
if self == stm32App.LIGHT:
return 'lighting_app.out.flashbundle.txt'
else:
raise Exception('Unknown app type: %r' % self)
def BuildRoot(self, root):
return os.path.join(root, 'examples', self.ExampleName(), 'stm32')
class stm32Board(Enum):
STM32WB55XX = auto()
def GetIC(self):
if self == stm32Board.STM32WB55XX:
return 'STM32WB5MM-DK'
else:
raise Exception('Unknown board #: %r' % self)
class stm32Builder(GnBuilder):
def __init__(self,
root,
runner,
app: stm32App = stm32App.LIGHT,
board: stm32Board = stm32Board.STM32WB55XX):
super(stm32Builder, self).__init__(
root=app.BuildRoot(root),
runner=runner)
self.board = board
self.app = app
stm32_chip = self.board.GetIC()
self.extra_gn_options = ['stm32_ic_family="%s"' % stm32_chip]
self.extra_gn_options.append('chip_config_network_layer_ble=true')
self.extra_gn_options.append('treat_warnings_as_errors=false')
def GnBuildArgs(self):
return self.extra_gn_options
def build_outputs(self):
items = {}
for extension in ["out", "out.map", "out.hex"]:
name = '%s.%s' % (self.app.AppNamePrefix(), extension)
items[name] = os.path.join(self.output_dir, name)
# Figure out flash bundle files and build accordingly
with open(os.path.join(self.output_dir, self.app.FlashBundleName())) as f:
for line in f.readlines():
name = line.strip()
items['flashbundle/%s' %
name] = os.path.join(self.output_dir, name)
return items