当前位置:网站首页>22. Realization of message processing task
22. Realization of message processing task
2022-07-28 15:34:00 【Turing_ three hundred and twenty-one】
\qquad Here is HD-GR GNSS Message processing task implementation code of navigation software :
// main_message.c -- Navigation message processing task.
/* * Copyright (C) 2005 Andrew Greenberg * Distributed under the GNU GENERAL PUBLIC LICENSE (GPL) Version 2 (June 1991). * See the "COPYING" file distributed with this software for more information. */
/* Namuru GPS receiver project * Original : message.c * Mods : driving LED part has commented/replaced for Namuru HW * version : V1.1 * date : 8/7/2008 */
/* * HD-GR GNSS receiver project * Modes : Inherited the code of message.c in the Namuru GPS receiver project * V1.0 and made necessary adjustments to adapt to the new RTOS and * functions. * version : V1.0 * date : xx/xx/2015 */
#include <io.h>
#include <stdio.h>
#include <math.h>
#include "includes.h"
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "gps_message.h"
#include "b1i_message.h"
#include "main_ephemeris.h"
#include "main_position.h"
/****************************************************************************** * Defines ******************************************************************************/
/****************************************************************************** * Globals ******************************************************************************/
OS_FLAG_GRP *m_MessageFlag __attribute__ ((section(".isrdata.rwdata")));
OS_FLAGS channels_with_subframes __attribute__ ((section(".isrdata.rwdata")));
/****************************************************************************** * Statics ******************************************************************************/
/****************************************************************************** * Stuff incoming bits from the accum_task into words and subframes in * the messages structure. ******************************************************************************/
void message_task(void* pdata) // input 'pdata' not used
{
INT8U err;
OS_FLAGS channels_with_bits, channel_bits;
// There's no way that we're going to get a bit before this thread
// is first executed, so it's ok to run the flag init here.
m_MessageFlag = OSFlagCreate((OS_FLAGS)0, &err);
while (1) {
// Block if there are no channels with bits ready. Wake up if any bits
// from the 20 channels (0xFFFFF) are set. Clear the flag on wakeup,
// with the bits saved in channels_with_bits.
channels_with_bits = OSFlagPend(m_MessageFlag,
(1 << TOT_MAX_CHANNELS) - 1,
OS_FLAG_WAIT_SET_ANY + OS_FLAG_CONSUME,
0, &err);
// OK we're awake, process the messages
GNSS_ENTER_CRITICAL();
channel_bits = g_channel_bits;
GNSS_EXIT_CRITICAL();
// led_turnon(LED3);
// Clear the flag IPC shadow (see below)
channels_with_subframes = 0;
if (m_sys_posconst & POS_CONSTELL_BDS) {
b1i_process_message(channels_with_bits >> GPS_MAX_CHANNELS,
channel_bits >> GPS_MAX_CHANNELS);
channels_with_subframes <<= GPS_MAX_CHANNELS;
}
if (m_sys_posconst & POS_CONSTELL_GPS) {
gps_process_message(channels_with_bits, channel_bits);
}
// Wake up the ephemeris thread if there are subframes ready
if (channels_with_subframes) {
OSFlagPost(m_EphemerisChannelFlag, channels_with_subframes, OS_FLAG_SET, &err);
}
// led_turnoff(LED3);
}
}
边栏推荐
- 7. Definitions of real-time data backup and real-time clock
- Daily question (retrospective)
- 位运算的一些操作
- Shellcode writing learning environment
- 爬虫入门(1)——requests(1)
- Solve the problem of pycharm using PowerShell
- 手把手带你编写一个规范的字符设备驱动
- Self cultivation of programmers
- 21、电文处理任务定义
- The subst command mirrors a folder to a local disk
猜你喜欢

游戏测试的概念是什么?测试方法和流程有哪些?

基于RSocket协议实现客户端与服务端通信

MySQL 8.0 common (continuous update)

腾讯面试之--请你设计一个实现线程池顺序执行

详解.NET的求复杂类型集合的差集、交集、并集

MPLS LDP的原理与配置

Pycharm - output exception of program run and default comment of added function

关于Simulink如何生成模型覆盖率报告

Understand crmeb open source online education knowledge payment system

Nftscan and nftplay have reached strategic cooperation in the field of NFT data
随机推荐
Leetcode - sliding window extremum, search tree postorder traversal, statistical difference pairs, dividing equal subsets
Heap operation
Customer service system attached to crmeb Standard Edition
Opencv - cut out mask foreground area from grayscale image
7. Definitions of real-time data backup and real-time clock
10、相关数据累积任务实现
VS使用技巧
Crmeb v4.3 deployment process
[leetcode] binary search given an N-element ordered (ascending) integer array num and a target value target, write a function to search the target in num. if the target value exists, return the subscr
Chrome plug-in debugging
Jogy-61 voltage relay
腾讯面试之--请你设计一个实现线程池顺序执行
How to write a JMeter script common to the test team
最小堆提升每次排序的效率
ArcGIS Pro 中的编辑器
ERROR:bokeh.core.validation. check:E-1001 (BAD_COLUMN_NAME)
7、实时数据备份和实时时钟相关定义
day 7/12
8、实时数据备份和实时时钟功能实现
[leetcode] 35. Search the insertion position