Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
mmsd
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
2
Issues
2
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chris T
mmsd
Commits
dacd989d
Commit
dacd989d
authored
Jan 21, 2021
by
Chris T
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for modem suspending.
parent
eb57387e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
24 deletions
+28
-24
plugins/modemmanager.c
plugins/modemmanager.c
+28
-24
No files found.
plugins/modemmanager.c
View file @
dacd989d
...
...
@@ -88,6 +88,7 @@ struct modem_data {
GPtrArray
*
device_arr
;
gboolean
modem_available
;
gboolean
manager_available
;
gboolean
plugin_registered
;
};
typedef
struct
{
...
...
@@ -479,6 +480,7 @@ static gboolean
pur_mm_get_modem_state
(
void
)
{
MMModemState
state
;
g_autoptr
(
GError
)
error
=
NULL
;
if
(
!
modem
->
modem
)
{
pur_mm_state
(
PUR_MM_STATE_NO_MODEM
);
...
...
@@ -492,7 +494,6 @@ pur_mm_get_modem_state (void)
state
=
mm_modem_get_state
(
modem
->
modem
);
if
(
state
<
MM_MODEM_STATE_ENABLED
)
{
mms_error
(
"ModemManagerPlugin(): Modem Initializing...."
);
sleep
(
3
);
while
(
state
<
MM_MODEM_STATE_DISABLED
)
{
mms_error
(
"ModemManagerPlugin(): Something May be wrong with the modem, checking...."
);
switch
(
state
)
{
...
...
@@ -510,12 +511,21 @@ pur_mm_get_modem_state (void)
return
FALSE
;
case
MM_MODEM_STATE_INITIALIZING
:
/* Give the modem a second to initialize*/
sleep
(
3
);
state
=
mm_modem_get_state
(
modem
->
modem
);
break
;
default:
break
;
}
}
if
(
state
==
MM_MODEM_STATE_DISABLED
)
{
mms_error
(
"ModemManagerPlugin(): MM_MODEM_STATE_DISABLED"
);
mms_error
(
"ModemManagerPlugin(): Turning on Modem...."
);
mm_modem_set_power_state_sync
(
modem
->
modem
,
MM_MODEM_POWER_STATE_ON
,
NULL
,
&
error
);
if
(
error
!=
NULL
)
{
g_warning
(
"Error setting power state: %s
\n
"
,
error
->
message
);
}
}
mms_error
(
"Modem is ready..."
);
}
else
{
mms_error
(
"Done with While Loop: MM_MODEM_STATE_ENABLED"
);
...
...
@@ -528,34 +538,20 @@ pur_mm_get_modem_state (void)
static
void
pur_mm_state
(
int
state
)
{
MMModemState
modem_state
;
//const char *pin = NULL;
switch
(
state
)
{
case
PUR_MM_STATE_MODEM_FOUND
:
if
(
!
modem
->
modem_available
)
{
if
(
modem
->
modem
)
{
modem_state
=
mm_modem_get_state
(
modem
->
modem
);
mms_error
(
"ModemManagerPlugin(): PUR_MM_STATE_MODEM_FOUND"
);
if
(
modem_state
==
MM_MODEM_STATE_LOCKED
)
{
/*
* While logic exists to unlock the SIM, I do not think
* mmsd should attempt to unlock the modem.
*
*/
mms_error
(
"ModemManagerPlugin(): SIM is locked! Not attempting to unlock..."
);
mm_modem_get_sim
(
modem
->
modem
,
NULL
,
(
GAsyncReadyCallback
)
cb_get_sim_ready
,
NULL
);
mms_error
(
"ModemManagerPlugin(): SIM is Unlocked!"
);
if
(
!
pur_mm_get_modem_state
())
{
break
;
}
else
{
mm_modem_get_sim
(
modem
->
modem
,
NULL
,
(
GAsyncReadyCallback
)
cb_get_sim_ready
,
NULL
);
mms_error
(
"ModemManagerPlugin(): SIM is Unlocked!"
);
if
(
!
pur_mm_get_modem_state
())
{
break
;
}
else
{
pur_mm_state
(
PUR_MM_STATE_READY
);
}
pur_mm_state
(
PUR_MM_STATE_READY
);
}
}
modem
->
modem_available
=
TRUE
;
...
...
@@ -824,7 +820,11 @@ static void unset_context (void) {
}
static
void
mmsd_plugin_connect
(
void
)
{
mms_service_register
(
modem
->
service
);
if
(
modem
->
plugin_registered
==
FALSE
)
{
mms_error
(
"ModemManagerPlugin(): Registering Modem Manager MMS Service"
);
mms_service_register
(
modem
->
service
);
modem
->
plugin_registered
=
TRUE
;
}
mms_error
(
"ModemManagerPlugin(): Setting Bearer Handler"
);
mms_service_set_bearer_handler
(
modem
->
service
,
bearer_handler
,
modem
);
...
...
@@ -834,9 +834,9 @@ static void mmsd_plugin_connect (void) {
static
void
mmsd_plugin_disconnect
(
void
)
{
mms_error
(
"ModemManagerPlugin(): Disconnecting ModemManager Plugin"
);
mms_error
(
"ModemManagerPlugin(): Disabling Bearer Handler"
);
deactivate_bearer
(
modem
->
service
);
mms_service_set_bearer_handler
(
modem
->
service
,
NULL
,
NULL
);
g_free
(
modem
->
path
);
mms_service_unregister
(
modem
->
service
);
}
...
...
@@ -898,6 +898,7 @@ static int modemmanager_init(void)
introspection_data
=
g_dbus_node_info_new_for_xml
(
introspection_xml
,
NULL
);
g_assert
(
introspection_data
!=
NULL
);
modem
->
plugin_registered
=
FALSE
;
mm_get_modem_manager
();
return
0
;
...
...
@@ -905,6 +906,9 @@ static int modemmanager_init(void)
static
void
modemmanager_exit
(
void
)
{
if
(
modem
->
plugin_registered
==
TRUE
)
{
mms_service_unregister
(
modem
->
service
);
}
if
(
modem
->
manager_available
)
{
pur_mm_disconnect
();
g_clear_object
(
&
modem
->
mm
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment