Skip to content

Latest commit

 

History

History
115 lines (99 loc) · 3.36 KB

usb_moded-ssu.c

File metadata and controls

115 lines (99 loc) · 3.36 KB
 
Aug 24, 2018
Aug 24, 2018
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
* @file usb_moded-ssu.c
*
* Copyright (C) 2016-2018 Jolla. All rights reserved.
*
* @author: Simo Piiroinen <simo.piiroinen@jollamobile.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the Lesser GNU General Public License
* version 2 as published by the Free Software Foundation.
*
* 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.
*
* You should have received a copy of the Lesser GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
22
23
#include "usb_moded-ssu.h"
Sep 5, 2018
Sep 5, 2018
24
25
26
#include "usb_moded-log.h"
Sep 5, 2018
Sep 5, 2018
27
28
29
30
31
#include <stdlib.h>
#include <string.h>
#include <ssusysinfo.h>
Aug 24, 2018
Aug 24, 2018
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* ========================================================================= *
* Prototypes
* ========================================================================= */
/* -- ssu -- */
static void ssu_free_handle (void);
static ssusysinfo_t *ssu_get_handle (void);
gchar *ssu_get_manufacturer_name(void);
gchar *ssu_get_product_name (void);
/* ========================================================================= *
* Data
* ========================================================================= */
Dec 7, 2016
Dec 7, 2016
47
48
/** Cached ssu-sysinfo handle */
static ssusysinfo_t *ssu_instance = 0;
Dec 7, 2016
Dec 7, 2016
50
51
/** Flag for ssu-sysinfo instance has been initialized */
static gboolean ssu_intialized = FALSE;
Aug 24, 2018
Aug 24, 2018
53
54
55
56
/* ========================================================================= *
* Functions
* ========================================================================= */
Dec 7, 2016
Dec 7, 2016
57
58
/** Atexit callback for releasing cached ssu-sysinfo handle */
static void ssu_free_handle(void)
Dec 7, 2016
Dec 7, 2016
60
61
/* Make sure instance does not get created on exit path */
ssu_intialized = TRUE;
Dec 7, 2016
Dec 7, 2016
63
64
65
66
/* Release existing instance */
ssusysinfo_delete(ssu_instance),
ssu_instance = 0;
}
Dec 7, 2016
Dec 7, 2016
68
/** Helper for obtaining ssu-sysinfo handle on demand
Dec 7, 2016
Dec 7, 2016
70
* @return ssu-sysinfo, or NULL in case of errors
Dec 7, 2016
Dec 7, 2016
72
static ssusysinfo_t *ssu_get_handle(void)
Dec 7, 2016
Dec 7, 2016
74
75
76
77
78
79
80
/* Attempt only once */
if( !ssu_intialized ) {
ssu_intialized = TRUE;
ssu_instance = ssusysinfo_create();
atexit(ssu_free_handle);
}
return ssu_instance;
Dec 7, 2016
Dec 7, 2016
83
/** Read device manufacturer name from the SSU configuration
84
85
86
87
88
89
90
91
*
* Caller must release non-null return value with g_free().
*
* @return human readable string, or NULL in case of errors
*/
gchar *
ssu_get_manufacturer_name(void)
{
Dec 7, 2016
Dec 7, 2016
92
93
94
95
96
97
gchar *res = 0;
const char *val = ssusysinfo_device_manufacturer(ssu_get_handle());
if( val && strcmp(val, "UNKNOWN") )
res = g_strdup(val);
log_debug("%s() -> %s", __FUNCTION__, res ?: "N/A");
return res;
Dec 7, 2016
Dec 7, 2016
100
/** Read device model name from the SSU configuration
101
102
103
104
105
106
107
108
*
* Caller must release non-null return value with g_free().
*
* @return human readable string, or NULL in case of errors
*/
gchar *
ssu_get_product_name(void)
{
Dec 7, 2016
Dec 7, 2016
109
110
111
112
113
114
gchar *res = 0;
const char *val = ssusysinfo_device_pretty_name(ssu_get_handle());
if( val && strcmp(val, "UNKNOWN") )
res = g_strdup(val);
log_debug("%s() -> %s", __FUNCTION__, res ?: "N/A");
return res;