本发明专利技术涉及电子或通信设备,公开了一种器件状态相关消息的处理方法,使得提高系统的健壮性以及系统对消息处理的正确性。本发明专利技术中,在器件状态相关消息的处理过程中,对器件当前状态的进行再确认,如果该器件的当前与待处理消息所期望的状态不一致则触发异常处理。作为一种异常处理方式,如果器件只有两个状态并且当前处理的是器件状态改变消息,则可通过丢弃一下条器件状态改变消息以实现去抖动。
【技术实现步骤摘要】
本专利技术涉及电子或通信设备,特别涉及电子或通信设备中。
技术介绍
随着通信技术与计算机科学的不断发展,人们对软件系统规模的要求愈来愈高。为了满足市场需求以及软件系统的开发效率,系统开发人员往往采用模块化的开发方法,也就是将整的一个软件系统按功能划分成各个模块,每个模块实现其相应的功能。为了提高该系统的性能稳定性,模块与模块之间应当尽量满足低耦合、高内聚的要求。低耦合指的是不同模块之间相互联系的程度应尽量的低;高内聚指的是同一模块内各个元素之间相互联系的程度应尽量的高。在现代软件设计过程中普遍采用消息处理机制来大大的降低软件系统各模块之间的耦合度,使软件系统内各模块之间能更好的分工与合作。在采用消息处理机制的软件系统中,各功能模块之间的信息交互是由消息的发送以及消息的接收处理来实现的。目前,在许多电子产品中,相关器件的状态是由底层驱动模块进行实时检测的,当器件的状态改变时,底层驱动模块就会向上层应用模块发送器件状态改变消息。上层应用模块负责接受该器件状态改变消息,并按照定义的规程执行相应的操作。如图1所示,在全球移动通信系统(Global System formobile Communication,简称“GSM”)系统中,提供用户身份识别的用户身份鉴别模件(Subscriber Identification Module,简称“SIM”)是由底层驱动模块进行实时检测的,当底层驱动模块发现SIM的状态改变时,就会向上层应用模块发送器件状态改变消息,该消息存储在起缓存作用的消息队列中。上层应用模块从消息队列中取出器件状态改变消息,按照器件状态改变消息的内容执行相应的操作。在实际应用中,上述方案存在以下问题当底层驱动模块检测到器件状态发生改变并将器件状态改变消息发送到上层应用模块后,如果该器件的状态在很短的时间内再次发生改变,软件系统就有可能出现异常。例如,器件的抖动就有可能引起软件系统的异常。造成这种情况的主要原因在于,消息的发送与消息的处理是一个异步过程。也就是说,在底层驱动模块将器件状态改变消息发送到上层应用模块与上层应用模块接收并开始处理该消息之间存在着一定的时间间隔,并且,这段时间间隔的大小因不同的现实系统或同一系统所处的不同状态而不同。而在现有的消息处理过程中,上层应用模块一旦接收到由底层驱动模块发送来的器件状态改变消息,就依据器件状态改变消息的内容立即处理该消息。因此,如果在上层应用模块处理器件状态改变消息时,该器件状态已经再次发生改变,那么,上层应用模块简单的按照该器件状态改变消息的内容进行处理就有可能引起软件系统的异常。如图1所示,如果SIM发生抖动,那么SIM的状态就会在极短的时间内发生两次改变。由于底层驱动模块是实时检测SIM的状态,所以,底层驱动模块就会几乎连续的发送两次器件状态改变消息给上层应用模块,这两条消息都先存储在消息队列中。当上层应用模块从消息队列中取出第一条器件状态改变消息并按照该消息的内容进行处理时,SIM已经发生了第二次的状态改变,也就是说上层应用模块在处理该器件状态改变消息时所期待的器件状态与当前SIM的器件状态不一致。此时,就有可能引起软件系统的异常。虽然,也可以通过在底层驱动模块的器件状态检测过程中增加一个延时再确认的过程来改善器件状态的去抖动处理以及系统消息处理的正确性。其中,延时再确认指的是当底层驱动模块检测到器件的状态发生改变时,并不立即发送器件状态改变消息给上层应用模块,而是延时一段时间,如果该器件的状态没有再次发生改变,才将器件状态改变消息发送给上层应用模块。但是,对延时时间的设置难度较大。如果延时时间设置的过短,去抖动效果较差,而且同样可能出现因为器件状态的再次改变导致上层应用模块错误处理消息;如果延时时间设置的过长,虽然去抖动效果以及消息处理的正确性会有所改善,但是系统的实时性较差。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种,使得提高系统的健壮性以及系统对消息处理的正确性。为实现上述目的,本专利技术提供了一种,涉及用于实时检测器件状态的底层驱动模块和处理器件相关消息的上层应用模块,所述方法包含以下步骤A当所述底层驱动模块检测到器件的状态发生变化时,记录该器件的当前状态;B所述上层应用模块处理与所述器件状态相关的消息时,先查询该器件被记录的当前状态,比较查询结果和被处理消息所期望的状态,如果不一致则进行异常处理。其中,所述步骤A还包含以下子步骤在记录所述器件的当前状态后,向所述上层应用模块上报器件状态改变消息。此外在所述方法中,如果所述器件只有两个状态并且当前处理的是所述底层驱动模块上报的器件状态改变消息,则所述步骤B中的异常处理可以是直接丢弃下一条所述底层驱动模块上报的器件状态改变消息。此外在所述方法中,所述步骤A中,所述底层驱动模块将所述器件的当前状态记录在本地;所述步骤B中,所述上层应用模块通过与所述底层驱动模块的交互,查询所述器件被记录的当前状态。此外在所述方法中,所述步骤A中,所述底层驱动模块将所述器件的当前状态记录在所述上层应用模块可以访问的公共存储区或寄存器;所述步骤B中,所述上层应用模块通过从所述公共存储区或寄存器直接读取相应的数据,查询所述器件被记录的当前状态。此外在所述方法中,所述步骤B中,如果所述查询结果和被处理消息所期望的状态一致,则所述上层应用模块正常处理所述消息。此外在所述方法中,所述器件可以是用户身份鉴别模件或用户服务识别模块,该器件的状态可以是在位和不在位两种。此外在所述方法中,所述器件可以是耳机,该器件的状态可以是插入和未插入两种。此外在所述方法中,所述步骤B中,所述与器件状态相关的消息可以是耳机按键状态改变消息,查询的状态可以是耳机插入或未插入状态,该消息所期望的状态是耳机插入状态,如果查询结果是耳机未插入状态,则进行的异常处理是忽略当前的耳机按键状态改变消息。通过比较可以发现,本专利技术的技术方案与现有技术的主要区别在于,在器件状态相关消息的处理过程中,对器件当前状态的进行再确认,如果该器件的当前与待处理消息所期望的状态不一致则触发异常处理。作为一种异常处理方式,如果器件只有两个状态并且当前处理的是器件状态改变消息,则可通过丢弃一下条器件状态改变消息以实现去抖动。这种技术方案上的区别,带来了较为明显的有益效果,即通过对器件当前状态的再确认,确保了系统对消息处理的合理性以及正确性。由于起缓存作用的消息队列的存在,上层应用模块在处理消息的实时性并没有保障,消息被处理的时刻器件的状态可能已经发生了变化,而消息是依赖于器件状态的,所以对器件当前状态的再确认可以保证已过时的消息不会被错误地处理。通过对器件当前状态的再确认,使相应的消息异常处理成为可能,从而加强系统的健壮性稳定性。对于只有两个状态的器件,可以很简单的在上层应用模块的器件状态改变消息处理过程中实现对器件状态抖动的去抖动处理。这里因为抖动时两个状态的消息一定是成对出现的,如果处理一条器件状态改变消息时发现与器件当前的状态不匹配,则下一条器件状态改变消息一定是与处理中的消息起抵消作用的,因此可以通过成对地忽略器件状态改变消息达到去抖动的效果。附图说明图1是现有技术中对SIM状态检测及消息处理的结构图;图2是根据本专利技术第一实施例中底层驱动模块检测器件本文档来自技高网...
【技术保护点】
一种器件状态相关消息的处理方法,涉及用于实时检测器件状态的底层驱动模块和处理器件相关消息的上层应用模块,其特征在于,所述方法包含以下步骤:A当所述底层驱动模块检测到器件的状态发生变化时,记录该器件的当前状态;B所述上层应用模 块处理与所述器件状态相关的消息时,先查询该器件被记录的当前状态,比较查询结果和被处理消息所期望的状态,如果不一致则进行异常处理。
【技术特征摘要】
1.一种器件状态相关消息的处理方法,涉及用于实时检测器件状态的底层驱动模块和处理器件相关消息的上层应用模块,其特征在于,所述方法包含以下步骤A当所述底层驱动模块检测到器件的状态发生变化时,记录该器件的当前状态;B所述上层应用模块处理与所述器件状态相关的消息时,先查询该器件被记录的当前状态,比较查询结果和被处理消息所期望的状态,如果不一致则进行异常处理。2.根据权利要求1所述的器件状态相关消息的处理方法,其特征在于,所述步骤A还包含以下子步骤在记录所述器件的当前状态后,向所述上层应用模块上报器件状态改变消息。3.根据权利要求2所述的器件状态相关消息的处理方法,其特征在于,如果所述器件只有两个状态并且当前处理的是所述底层驱动模块上报的器件状态改变消息,则所述步骤B中的异常处理可以是直接丢弃下一条所述底层驱动模块上报的器件状态改变消息。4.根据权利要求1所述的器件状态相关消息的处理方法,其特征在于,所述步骤A中,所述底层驱动模块将所述器件的当前状态记录在本地;所述步骤B中,所述上层应用模块通过与所述底层驱动模块的交互,查询所述器件被记录的当前状态。5.根据权利要求1所...
【专利技术属性】
技术研发人员:魏东,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。