'system_info_api.js',
'system_info_battery.cc',
'system_info_battery.h',
+ 'system_info_build.cc',
+ 'system_info_build.h',
'system_info_context.cc',
'system_info_context.h',
'system_info_context_desktop.cc',
--- /dev/null
+// Copyright (c) 2013 Intel Corporation. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "system_info/system_info_build.h"
+
+#include <libudev.h>
+#include <stdlib.h>
+#include <sys/utsname.h>
+#include <unistd.h>
+
+#include <fstream>
+
+#include "common/picojson.h"
+#include "system_info/system_info_utils.h"
+
+using namespace system_info;
+
+SysInfoBuild::SysInfoBuild(picojson::value& error) {
+ udev_ = udev_new();
+ if (!udev_) {
+ SetPicoJsonObjectValue(error, "message",
+ picojson::value("Can't create udev."));
+ }
+}
+
+SysInfoBuild::~SysInfoBuild() {
+ if(udev_)
+ udev_unref(udev_);
+}
+
+bool SysInfoBuild::GetBuildInfo(std::string& Manufactor,
+ std::string& Model,
+ std::string& Build) {
+ static struct utsname buf;
+ memset(&buf, 0, sizeof (struct utsname));
+ uname(&buf);
+ char *tmpbuild = strcat(buf.sysname, buf.release);
+ Build.assign(tmpbuild);
+
+ std::ifstream in;
+ in.open("/var/log/dmesg");
+
+ int dmipos;
+ std::string info;
+ do {
+ getline(in, info);
+ dmipos = info.find("] DMI: ", 0);
+ } while (dmipos == std::string::npos);
+ info.erase(0, dmipos + 7);
+
+ int ManufacHead = 0;
+ int ManufacTail = -1;
+ ManufacTail = info.find(' ', 0);
+ Manufactor.assign(info, ManufacHead, ManufacTail - ManufacHead);
+
+ int ModelHead = 0;
+ int ModelTail = -1;
+ ModelHead = ManufacTail + 1;
+ ModelTail = info.find(',', 0);
+ Model.assign(info, ModelHead, ModelTail-ModelHead);
+
+ in.close();
+
+ return !(Model.empty() || Manufactor.empty());
+}
--- /dev/null
+// Copyright (c) 2013 Intel Corporation. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_INFO_SYSTEM_INFO_BUILD_H_
+#define SYSTEM_INFO_SYSTEM_INFO_BUILD_H_
+
+#include <libudev.h>
+
+#include <string>
+
+#include "common/picojson.h"
+#include "common/utils.h"
+
+class SysInfoBuild {
+ public:
+ static SysInfoBuild& GetSysInfoBuild(picojson::value& error) {
+ static SysInfoBuild instance(error);
+ return instance;
+ }
+ ~SysInfoBuild();
+ bool GetBuildInfo(std::string& Manufactor,
+ std::string& Model,
+ std::string& Build);
+
+ private:
+ SysInfoBuild(picojson::value& error);
+
+ struct udev* udev_;
+
+ DISALLOW_COPY_AND_ASSIGN(SysInfoBuild);
+};
+
+#endif // SYSTEM_INFO_SYSTEM_INFO_BUILD_H_
#include "common/picojson.h"
#include "system_info/system_info_battery.h"
+#include "system_info/system_info_build.h"
#include "system_info/system_info_display.h"
#include "system_info/system_info_storage.h"
#include "system_info/system_info_utils.h"
void SystemInfoContext::GetCPU(picojson::value& error,
picojson::value& data) {
double load[1];
- if (getloadavg(load, 1) == -1) {
+ if (getloadavg(load, 1) == -1) {
SetPicoJsonObjectValue(error, "message",
picojson::value("Get CPU load failed."));
return;
void SystemInfoContext::GetBuild(picojson::value& error,
picojson::value& data) {
- // FIXME(halton): Add actual implementation
- SetPicoJsonObjectValue(data, "model", picojson::value("Tizen PC"));
- SetPicoJsonObjectValue(data, "manufacturer", picojson::value("Intel Corp."));
- SetPicoJsonObjectValue(data, "buildVersion", picojson::value("3.0"));
- SetPicoJsonObjectValue(error, "message", picojson::value(""));
+ SysInfoBuild& build = SysInfoBuild::GetSysInfoBuild(error);
+
+ std::string Manufacturer;
+ std::string Model;
+ std::string Build;
+ if (build.GetBuildInfo(Manufacturer, Model, Build)) {
+ SetPicoJsonObjectValue(data, "model", picojson::value(Model));
+ SetPicoJsonObjectValue(data, "manufacturer", picojson::value(Manufacturer));
+ SetPicoJsonObjectValue(data, "buildVersion", picojson::value(Build));
+ SetPicoJsonObjectValue(error, "message", picojson::value(""));
+ } else {
+ SetPicoJsonObjectValue(error, "message",
+ picojson::value("Unable to get info."));
+ }
}
void SystemInfoContext::GetLocale(picojson::value& error,