blob: 60f9633945895cb485119fd35aa6b9574d5fe6a7 [file] [log] [blame]
Nikhil Namjoshi4aa93172022-09-22 18:51:37 +00001// Copyright 2022 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
Willy Tu3b1b4272021-03-02 17:58:10 -080014
15#include "flash_size.hpp"
16
17#include "commands.hpp"
18#include "errors.hpp"
19#include "handler.hpp"
20
Patrick Williams444b5ea2023-05-19 13:56:42 -050021#include <ipmid/api-types.hpp>
22
Willy Tu3b1b4272021-03-02 17:58:10 -080023#include <cstdint>
24#include <cstring>
Willy Tub4e37042021-10-12 17:12:30 -070025#include <span>
Willy Tu3b1b4272021-03-02 17:58:10 -080026#include <string>
27#include <vector>
28
29namespace google
30{
31namespace ipmi
32{
33
Willy Tub4e37042021-10-12 17:12:30 -070034Resp getFlashSize(std::span<const uint8_t>, HandlerInterface* handler)
Willy Tu3b1b4272021-03-02 17:58:10 -080035{
Willy Tu3b1b4272021-03-02 17:58:10 -080036 uint32_t flashSize;
37 try
38 {
39 flashSize = handler->getFlashSize();
40 }
41 catch (const IpmiException& e)
42 {
Willy Tuff3cd8e2021-09-14 22:49:55 -070043 return ::ipmi::response(e.getIpmiError());
Willy Tu3b1b4272021-03-02 17:58:10 -080044 }
45
Willy Tuff3cd8e2021-09-14 22:49:55 -070046 flashSize = htole32(flashSize);
47 return ::ipmi::responseSuccess(
48 SysOEMCommands::SysGetFlashSize,
Patrick Williams8c0094e2024-08-16 15:22:37 -040049 std::vector<std::uint8_t>(
50 (std::uint8_t*)&(flashSize),
51 (std::uint8_t*)&(flashSize) + sizeof(std::uint32_t)));
Willy Tu3b1b4272021-03-02 17:58:10 -080052}
53} // namespace ipmi
54} // namespace google