O2O项目计划书模版

**O2O项目计划书

http://www.100ec.cn/detail--6234427.html

1. 摘要 

1.1 项目描述 

   在当前社会,互联网已成为人类生活中“不可或缺”的生活伴侣,电子商务正在逐步成为中国人的最时尚的消费方式。许多人认为电子商务仅仅是网上购物,这是不全面的认知,在不久的将来一切消费活动都可借助互联网平台完成。当前电子商务主要模式为网上零售,随着离线商务模式的广泛应用给了传统服务行业搭乘电子商务快车的机会。 

  离线商务模式又称Online to Offline.简称O2O模式,是指把传统的服务业企业的经营活动带动到线上,利用互联网平台展开营销推广,让线上成为商户的服务前台。O2O模式的益处在于,订单在线上产生,每笔交易可追踪,展开推广效果透明度高。让消费者在线上选择心仪的服务再到线下享受服务。我们的经营项目为垂直领域的中间业务,具体为餐饮企业的宴会预订服务,经营目标有以下二点: 

a) .为消费者提供方便快捷的宴会预订服务。 

 b) 为餐饮企业提供互联网营销平台,帮助餐饮企业扩大品牌知名度,

让其获得更大的发展空间。 

 1.2 产品描述  

我们将通过旗下网站“***(www.****.cn)”[正在建设]来实现O2O模式宴会预订的业务。易家肴定位生活类电子商务服务平台,用快捷的宴会预订服务和一定量得折扣吸引消费者。 

 ? 餐饮企业在“***”拥有自己的主题页面,页面中标有宴会套餐价格,

还具备宴席数量、宴会日期和时段的选择的功能。 

 ? “***”会建立和餐饮企业联网的后台系统,当消费者在网站生成订单

后,订单会同步发送给餐饮企业。  

? 鉴于宴会属于大额服务交易,预订需要消费者提供真实有效的身份信

息和联络方式。 

 ? 为防止恶意行为,消费者在预订成功后需在36小时内到店确认。消费

者到店确认后餐饮企业会把确认后的订单反馈回未能在规定时间内到店确认的客户,系统会自动取消该订单。  ? 

同时为了保证餐饮企业有充裕的准备时间,网站只接受当日一周以后的订单。在消费者享受完订单中的服务后,“***”会根据订单中的金额按合作协议让餐饮企业进行返利。   

 1.3 市场分析  

“***”属于将传统的酒店餐饮业电子商务化,宴会作为日常生活中常见的喜庆方式(如:婚宴、寿宴、状元宴、生日宴等)有着庞大的市场规模和良好的消费习惯。以武汉市为例,有调查显示20##年全年在餐饮方面的消费达到300亿,其中各类宴会的消费占到了21%,如此优厚的市场条件为“***”创造了广阔的成长发展空间。  

 1.4 竞争分析 

 餐饮行业是传统行业,市场成熟,“***”推出的O2O模式宴会预订服务在国内尚属首家。“***”将积极做到以下几点:  

a) 诚信经营,探索业务发展模式。 

b) 在互联网电子商务生活平台领域树立标杆。 

c) 建立品牌信誉度和良好的市场口碑。 d) 完善技术,做好“用户体验” 

 “***”尽量在潜在竞争者进入行业前积累丰富的行业经验和良好的市场基础,以确立该领域的领先优势,切实给餐饮企业带来效益,营创“开放共赢”的合作气氛. 项目的意义和必要性 

2.1 项目的重要意义 

1、为消费者提供便捷的宴会预订服务,点击鼠标完成以往需要几天时间完成的宴会预订。 

2、将传统餐饮企业引入电子商务平台的创新,是未来发展趋势。  

3、广阔的互联网是未来营销的主要渠道,且具有营销定位精准、成本低、推广范围大等特点。给餐饮企业走出本土,发展壮大提供了良好的契机。  

4、O2O模式合适餐饮企业的特点,到线上招揽消费者,使企业掌握主动权,而不是传统的“开门等客”。   

2.2 项目的必要性   

1:解决消费需求 经过“***”的市场调查,在以往的宴会预订过程中,客户往往来回奔走在各大酒楼之间,比环境,比价格;还可能出现心仪的酒店在消费者想预订的时间段被订满。“***”洞察到消费者的需求,利用互联网平台解决这一需求。 

 2:为餐饮企业拓宽经营渠道,利用这个平台用线上营销吸引消费者,对比传统渠道推广成本低,效果更佳。 

 3:为餐饮企业扩大品牌知名度,“***”也将通过网络营销手段为网站上的餐饮企业进行宣传,充分发挥互联网不受时间和地域限制的优势,给餐饮企业带来更高的市场份额。   

3 项目目标计划和市场分析 

3.1 项目的目标规划 

 前期目标是为网站筹备提供支持,开拓餐饮企业合作方,收集所需的各类有关数据,完成网站模块的设计和建设,中间完成后台系统的开发和测试及数据库的建设。后期按照网站的整体设计进行整合和测试。   

3.2 计划安排 

? 第一阶段,准备阶段 — 20##年2月 (已完成) 

? 准备阶段包括,企业注册,办公所需用品的购置等事宜。 

? 第二阶段,基础数据的数据和市场调研分析 — 20##年2月 — 20##年4月(已完成) 

? 本阶段分析网站技术需要解决的问题,并对问题进行深入挖掘研究、解决,

在此同时开拓餐饮企业合作伙伴和对应的基础数据的收集。 

? 第三阶段,软件开发和硬件平台设计 — 20##年4月 — 20##年 5 月

(正在进行中)本阶段包括后台系统的概要设计和详细设计,同时技术人员进行网站模块

的设计和建设,设计通过后连接后台系统进行功能测试工作。 ? 

第四阶段,网站试运行和维护 — 20##年5月 — 20##年 8月 

? 本阶段计划从20##年5月进入试运行阶段,通过实际的操作验证系统,

以便发现问题及时解决。 

补充:各阶段可根据实际情况适当调整进度。  

3.3 市场分析  

 ? 客户分析:“***”提供的服务使用于有宴会需求的消费人群,以25—55

岁的人群为主,家里孩子考上大学有谢师宴,新婚夫妻有婚宴,家里老人

大寿有寿宴。“***”将针对消费者特性发动不同的营销攻势,以博得消费者的信任,上“***”预订宴会。 

? 市场前景分析:以武汉市为例,20##年全年全市在餐饮方面的消费支出

达到300亿,其中各类宴会占到21%的消费比例。庞大的市场规模是我们

的潜在市场,并且在未来三到五年电子商务会渗透到生活的方方面面,现有的B2C、C2C门槛已经相当之高,只有服务类有创业机会,借助新一轮的经济发展的机会,电子商务服务业会在未来生活中占据越来越大的比重。   

4  竞争分析 

4.1 竞争优势  

 “***”在宴会预订类服务领域尚属首家尝试,“***”会积极探索互联网服务业新模式,为消费者提供便捷周到的服务,同时利用营销手段扩大“***”品牌知名度,深化和餐饮企业伙伴的合作关系以确保“***”能存活下来,并用人性化的管理打造具有同一价值取向的团队尽力做好自己的产品,真正解决消费者的需求,让消费者体验到“网络带动生活,生活因网络更精彩。”  

 4.2 竞争对手分析  

 “***”的服务模式势必会造成大量复制,无论是独立创业者还是互联网寡头都有可能进一杯羹。“***”秉承公平、公开、公正的竞争原则,欢迎互联网从业者的进入电子商务服务业,“***”将视同行如伙伴,共同为顾客营造良好贴心的网络服务消费环境,促进行业健康快速发展。 

  5 总体战略 

“***”将以宴会预订为核心营收业务,在适当时机扩充产品线,目标是打造“用户体验”最佳的电子商务服务型网站。  

5.1 发展战略  

 初期以武汉市为试点,开展业务,探索出自己独到的服务特质和业务流程,并拓展1-2个城市发展探索信息整合后的业务模式。中期开始规模化扩张,以北京、上海、广州等一线城市和东部沿海沿海城市为主。最终将业务覆盖到全国大部分城市并移植移动互联网平台,让消费者能随时享受“***”带来的便捷轻松的乐趣生活。  

 6 企业文化 

 “***”秉承用“网络带动生活,生活因网络更精彩”的理念,以创新,独到,进取为企业文化,打造一流执行力团队树立一致的价值观取向。最大限度为消费者提供优质服务,为上游商户开辟新的经营渠道。   

7 财务管理制度  

? 筹款管理 ? 运营资金管理 ? 利润分配管理 

 “***”已经根据自身的业务需要建立了完整的财务制度,做到资本权属清晰,财务关系明确并符合法人治理结构  

8.1 组织构架 

技术部 :日常网站数据更新,维护优化网站结构,开发相应的系统,新

产品研发,移动终端产品的研发和维护更新。 

财务部 :加强内部财务管理,建立健全内部财务制度。  

 市场部 :开拓合作伙伴,分析市场数据,为战略决策提供数据支持。营销部 :各渠道的宣传策划,设计营销策略,客服反馈。 

 行政人力资源部 :加强内部员工管理,设计薪酬,福利等激励方案。   

9 风险分析 

9.1 创业环境风险分析 

互联网造就了二十一世纪前十年的科技繁荣,互联网正深刻影响改变着生活,让生活变得更便捷更富有乐趣。未来五年互联网的大多数资源将会掌握在几大门户或平台手中,在瞬息万变的商场环境中,***将力争通过电子商务服务业做到一个涵盖多数生活服务类消费项目的平台,以便在下一波互联网变革中生存下来。 

“***”的在宴会预订业务目前没有直接竞争对手,但在餐饮预订方面几大互联网巨头均有布局,百度、淘宝、腾讯,包括旅游垂直领域的携程。相信在不久会有大众点评,拉手,街旁等网企也会有所动作。“***”感到十足的危机感,希望通过自己的努力得到市场的认可从而生存下来。 

9.2 项目模式风险分析  

在项目实施的初步阶段,消费者对O2O模式的陌生感会造成初期阶段网站的浏览量少;消费者接受能力慢的局面。***会积极进行线上线下的宣传推广,展开营销活动使消费者得到好的“用户体验”从而选择“***”。  

9.3 人力资源风险分析 

O2O模式的核心管理在于对线下团队的管理,对上游商户的管理,***正在积极通过各个渠道邀请有胆识的创业者加盟,希望通过团队的共同努力把“***”建立起来并得以生存。  

9.4 上游商户风险分析 

“***”作为垂直领域的中间商,如果没有上游餐饮企业的合作支持,***也不会面世。在初期接触中,餐饮企业表示出愿意合作的态度,但在具体分成上存在分歧,***会积极沟通并让步以促成与餐饮企业的合作。尽快让业务上线以方便消费者。 

 9.5 地域和消费习惯风险 

“***”团队身处武汉东湖高新区,只能是扎根本土开始创业。但是在团队前期的市场调查中显得,武汉人的电子商务消费习惯不如北京、上海、广州、深圳等一线城市,这样也给我们带来了极大的挑战。如何让不同地域的消费者都能接受“***”是我们待解决的问题,我们会积极分析市场,利用有针对性的营销手段调动出武汉人的电子商务消费观。  

10.盈利分析 

10.1盈利模式  

“***”的线上服务是对消费者免费开放的,“***”的营收来源是上游餐饮企业的预订返利和网站广告位的出租。目前“***”在与餐饮企业的初期接触中,拟定以交易金额的5%-8%进行返利(最终以签署的合作协议为准)。  

10.2 营收目标  

“***”将会在五月底份上线武汉的城市站。我们希望通过半年的努力,在年底达到十万的营收目标  

11. 团队简介 

11.1 公司简介 

“***”团队成员均为学生时代的同学,为了梦想走到一起共同打拼。团队于20##年3月初完成了公司注册及相关手续的办理。注册公司全称为:武汉宜卡网络科技有限公司。注册资本为叁万元人民币。公司法人代表为田源。 目前团队一名成员因个人原因决定退出项目,团队还剩三人。 

 

第二篇:项目计划书模版

第一章         项目概述... - 1 -

第一节         引言... - 1 -

第二节         项目介绍... - 2 -

第三节         项目可行性... - 4 -

第二章         项目估算... - 13 -

第一节         历史数据... - 13 -

第二节         评估成本... - 13 -

第三节         相关计算... - 13 -

(1)       工作量估算... - 13 -

(2)       成本估算... - 13 -

(3)       时间估算... - 13 -

第三章         风险评估... - 13 -

第一节         风险识别... - 13 -

第二节         风险应对策略... - 13 -

第四章         项目进度计划... - 13 -

第一节         项目任务分解... - 13 -

第二节         时间安排... - 13 -

第五章         关键问题... - 14 -

第六章         软件配置... - 14 -

第七章         人员组织... - 14 -

第八章         附录... - 14 -

第一章   项目概述

第一节   引言

推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。

随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发了出各种版本、各种类型的推箱子。这其中也包括很多手机版本的实现,伴随着手机与计算机的普及,很快推箱子游戏便进入了千家万户

 国内外研究现状及分析:Android是由Google为首的OHA(Open Handset Alliance)推出的一款开放的嵌入式操作系统平台,从2008推出的android SDK1.0到现在,Android SDK的最新版本已经升级到了最新的2.3,Android正以前所未有的速度聚集着来自世界各地的开发者,越来越多的创意被应用到Android应用程序的开发中,大有席卷整个手机产业的趋势。

说到Android系统,Google于20##年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。由于Android带有相当浓郁的Linux血统这也就意味着他拥有开源Linux的众多优点:安全、运算速度快、易于开发等等。

正因为Android具有上述的优点,所以它在国内具有相当强劲的竞争优势。青年网络的主要负责人潘长华先生说到:Android作为一款十分优秀的移动开发平台十分适合国内的开发环境。尤其是中小企业开发团队低成本以及源代码的分享可以为企业节省大量资金,这对于中小企业来说无疑是最大的诱惑。青年网络推出的"星网睿话"就是国内成功的Android开发产品。同时一个资深的Android开发爱好者告诉记者:如果你是个人开发爱好者,那么Android就是Google为你量身打造的,放弃闭源的种种吧,开源才是王道,Android才是未来的主宰。

伴随着Google Android操作系统的盛行,国内外的开发团队也逐渐的壮大起来了,基于Android SDK的系统开发,基于Android应用的开发等已逐渐倍受大家关注,而手机游戏开发历来是移动开发中分量最重的部分,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性,所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解AndroidSDK基础上,我打算开发一款完全适应于Android操作系统的推箱子益智游戏,此游戏采用OpenGL技术,实现2.5D斜视角的立体视角,采用SQLite轻量级数据库存储技术等质在为Android量生打造一款独特的游戏。

第二节   项目介绍

主机系统:Ubuntu9.04
(1)安装如下软件包
sudo apt-get install git-core
sudo apt-get install gnupg
sudo apt-get install sun-java5-jdk
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install gperf
sudo apt-get install libsdl-dev
sudo apt-get install libesd0-dev
sudo apt-get install build-essential
sudo apt-get install zip
sudo apt-get install curl
sudo apt-get install libncurses5-dev
sudo apt-get install zlib1g-dev
android编译对java的需求只支持jdk5.0低版本,jdk5.0 update 12版本和java 6不支持。
(2)下载repo工具
curl http://android.git.kernel.org/repo >/bin/repo
chmod a+x /bin/repo
(3)创建源代码下载目录:
mkdir /work/android-froyo-r2
(4)用repo工具初始化一个版本(以android2.2r2为例)
cd /work/android-froyo-r2
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
初始化过程中会显示相关的版本的TAG信息,同时会提示你输入用户名和邮箱地址,以上面的方式初始化的是android2.2 froyo的最新版本,
android2.2本身也会有很多个版本,这可以从TAG信息中看出来,当前froyo的所有版本如下:
 * [new tag]         android-2.2.1_r1 -> android-2.2.1_r1
 * [new tag]         android-2.2_r1 -> android-2.2_r1
 * [new tag]         android-2.2_r1.1 -> android-2.2_r1.1
 * [new tag]         android-2.2_r1.2 -> android-2.2_r1.2
 * [new tag]         android-2.2_r1.3 -> android-2.2_r1.3

 * [new tag]         android-cts-2.2_r1 -> android-cts-2.2_r1
 * [new tag]         android-cts-2.2_r2 -> android-cts-2.2_r2
 * [new tag]         android-cts-2.2_r3 -> android-cts-2.2_r3
这样每次下载的都是最新的版本,当然我们也可以根据TAG信息下载某一特定的版本如下:
repo init -u git://android.git.kernel.org/platform/manifest.git -b android-cts-2.2_r3
(5)下载代码
repo sync
froyo版本的代码大小超过2G,漫长的下载过程。
(6)编译代码
cd /work/android-froyo-r2
make

Ubuntu下安装Simba服务器将linux电脑上的内容共享,同一局域网内的另外一台Windows PC即可访问其共享内容,

从而实现Windows电脑向访问本地文件一样访问Linux文件系统的内容。

(1)安装Simaba服务器

sudo apt-get install samba

(2)安装samba图形化配置软件

sudo apt-get install system-config-samba

(3)创建一个Simba专用用户

从“系统”—“系统管理”—“用户和组”,来创建。如图,先点击“解锁”,然后“添加新用户”

然后输入新用户名字(如Simba)和密码(如111111),然后在“高级”里面,选择“主组”为sambashare后点击"确定"即可

一句话来概括,就是创建一个主组为sambashare的用户

(4)配置samba共享

从“系统”—“系统管理—”samba“,运行配置界面

然后”首选项“—”服务器设置“。点击:安全性,在最后的”来宾帐号“里面,

选择我们新建立的那个用户simba后点击确定

(5)修改samba配置文件

打开/etc/samba/smb.conf,修改valid users = XXXX为valid users = simba

(6)重启samba服务

sudo /etc/init.d/samba restart

(7)添加共享文件

从“系统”—“系统管理—”samba“,运行配置界面

点击"添加"来添加共享文件夹,点击"浏览"来选择需要共享的文件夹,选择"可擦写"和"显示",点击"访问"可以设置访问权限,最好设置成"允许所有用户访问"

第三节   项目可行性

第四节          首先了解一下tslib的运行原理,tslib的运行分成两部分
(1)校验
在LCD固定坐标位置依次显示出5个坐标让用户触摸,把LCD坐标和用户触摸时驱动屏驱动底层的坐标总共5组值保存起来
运行tslib库的算法对其进行运算,得出校准用7个值

(2)校准
每次触摸屏驱动读取到硬件坐标时应用校准用的7个值对该坐标进行一次运算,然后将运算后的坐标作为正常坐标即可。

按照上面的原理,
(1)我们先修改内核部分,我的平台用的触摸屏幕驱动是tsc2007,驱动文件为内核/drivers/input/touchscreen
目录下的tsc2007.c和ts_linear.c
其中,ts_linear.c中定义的是校准模块,该模块在proc文件系统中建立了7个文件,用来存放校准用的7个点,7的点的默认值
为1,0,0,0,1,0,1,对应的目标平台文件系统的位置为/proc/sys/dev/ts_device目录下a0,a1,a2,a3,a4,a5,a6等7个文件
此模块中还定义了一个校准函数ts_linear_scale,此函数的主要内容是读取a0,a1,a2,a3,a4,a5,a6等7个文件中的值作为7个
校准值与传入的触摸平坐标值进行运算,返回运算结果。
ts_linear_scale函数定义如下:
int ts_linear_scale(int *x, int *y, int swap_xy)
{
    int xtemp, ytemp;

    xtemp = *x;
    ytemp = *y;

    if (cal.a[6] == 0)
        return -EINVAL;

    *x = (cal.a[2] + cal.a[0] * xtemp + cal.a[1] * ytemp) / cal.a[6];
    *y = (cal.a[5] + cal.a[3] * xtemp + cal.a[4] * ytemp) / cal.a[6];

    if (swap_xy) {
        int tmp = *x;
        *x = *y;
        *y = tmp;
    }
    return 0;
}

第五节          ts2007.c为触摸屏驱,与其他驱动不同的地方是在取得硬件坐标值发送之前先调用了ts_linear_scale函数对坐标值进行了校准
            if (x > 0 && y > 0)
            {
                ts_linear_scale(&x, &y, invert);
                input_report_abs(input, ABS_X, x);
                input_report_abs(input, ABS_Y, y);
                input_report_abs(input, ABS_PRESSURE, 255);
                input_report_abs(input, ABS_TOOL_WIDTH, 1);
                input_report_key(input, BTN_TOUCH, 1);
                input_sync(input);
            }

(2)在android源代码/system/core/rootdir/init.rc文件中添加tslib相关的宏定义如下:
# touchscreen parameters
    export TSLIB_FBDEVICE /dev/graphics/fb0
    export TSLIB_CALIBFILE /data/etc/pointercal
    export TSLIB_CONFFILE  /system/etc/ts.conf
    export TSLIB_TRIGGERDEV /dev/input/event0
    export TSLIB_TSDEVICE /dev/input/event1

(2)移植tslib库到android系统,比较麻烦,看下一节的内容。

(3)校验程序完成后会将生成的7个校准值写入到环境变量TSLIB_CALIBFILE对应的路径/data/etc/pointercal文件中

(4)校验完后将pointercal文件中的7个值分别写入到/proc/sys/dev/ts_device目录下a0,a1,a2,a3,a4,a5,a6文件即可。

(5)开机启动的时候我们编写一个应用程序,首先判断环境变量TSLIB_CALIBFILE对应的路径/data/etc/pointercal文件是否存在,如果
文件存在而且非空,则将该文件中的7个值取出来分别写入到/proc/sys/dev/ts_device目录下a0,a1,a2,a3,a4,a5,a6文件

(6)为了确保未校验前触摸屏可用,我们将一次校验后得出的7个坐标值作为初始值,修改到内核ts_linear.c文件中。

a)         下面是源代码:
ts_linear.c文件
/*
 *  Touchscreen Linear Scale Adaptor
 *
 *  Copyright (C) 20## Marvell Corporation
 *
 *  Author: Mark F. Brown <markb@marvell.com>
 *  Based on tslib 1.0 plugin linear.c by Russel King
 *
 * This library is licensed under GPL.
 *
 */

#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/wait.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/proc_fs.h>
#include <linux/sysctl.h>
#include <asm/system.h>

/*
 * sysctl-tuning infrastructure.
 */
static struct ts_calibration {
/* Linear scaling and offset parameters for x,y (can include rotation) */
    int a[7];
} cal;

static ctl_table ts_proc_calibration_table[] = {
    {
     .ctl_name = CTL_UNNUMBERED,
     .procname = "a0",
     .data = &cal.a[0],
     .maxlen = sizeof(int),
     .mode = 0666,
     .proc_handler = &proc_dointvec,
     },
    {
     .ctl_name = CTL_UNNUMBERED,
     .procname = "a1",
     .data = &cal.a[1],
     .maxlen = sizeof(int),
     .mode = 0666,
     .proc_handler = &proc_dointvec,
     },
    {
     .ctl_name = CTL_UNNUMBERED,
     .procname = "a2",
     .data = &cal.a[2],
     .maxlen = sizeof(int),
     .mode = 0666,
     .proc_handler = &proc_dointvec,
     },
    {
     .ctl_name = CTL_UNNUMBERED,
     .procname = "a3",
     .data = &cal.a[3],
     .maxlen = sizeof(int),
     .mode = 0666,
     .proc_handler = &proc_dointvec,
     },
    {
     .ctl_name = CTL_UNNUMBERED,
     .procname = "a4",
     .data = &cal.a[4],
     .maxlen = sizeof(int),
     .mode = 0666,
     .proc_handler = &proc_dointvec,
     },
    {
     .ctl_name = CTL_UNNUMBERED,
     .procname = "a5",
     .data = &cal.a[5],
     .maxlen = sizeof(int),
     .mode = 0666,
     .proc_handler = &proc_dointvec,
     },
    {
     .ctl_name = CTL_UNNUMBERED,
     .procname = "a6",
     .data = &cal.a[6],
     .maxlen = sizeof(int),
     .mode = 0666,
     .proc_handler = &proc_dointvec,
     },

    {.ctl_name = 0}
};

static ctl_table ts_proc_root[] = {
    {
     .ctl_name = CTL_UNNUMBERED,
     .procname = "ts_device",
     .mode = 0555,
     .child = ts_proc_calibration_table,
     },
    {.ctl_name = 0}
};

static ctl_table ts_dev_root[] = {
    {
     .ctl_name = CTL_DEV,
     .procname = "dev",
     .mode = 0555,
     .child = ts_proc_root,
     },
    {.ctl_name = 0}
};

static struct ctl_table_header *ts_sysctl_header;

int ts_linear_scale(int *x, int *y, int swap_xy)
{
    int xtemp, ytemp;

    xtem = *x;
    ytem= *y;

    if (cal.[6] == 0)
        return -EINVAL;

    *x = (cal.a[2] + cal.a[0] * xtemp + cal.a[1] * ytemp) / cal.a[6];
    *y = (cal.a[5] + cal.a[3] * xtemp + cal.a[4] * ytemp) / cal.a[6];

    if (swap_xy) {
        int tmp = *x;
        *x = *y;
        *y = tmp;
    }
    return 0;
}

EXPORT_SYMBOL(ts_linear_scale);

static int __init ts_linear_init(void)
{
    ts_sysctl_header = register_sysctl_table(ts_dev_root);
    /* Use default values that leave ts numbers unchanged after transform */
    cal.a[0] = 1;
    cal.a[1] = 0;
    cal.a[2] = 0;
    cal.a[3] = 0;
    cal.a[4] = 1;
    cal.a[5] = 0;
    cal.a[6] = 1;
    return 0;
}

static void __exit ts_linear_cleanup(void)
{
    unregister_sysctl_table(ts_sysctl_header);
}

module_init(ts_linear_init);
module_exit(ts_linear_cleanup);

MODULE_DESCRIPTION("touch screen linear scaling driver");
MODULE_LICENSE("GPL");



ts2007.c文件
/*
 *  linux/drivers/input/touchscreen/tsc2007.c
 *
 *  touch screen driver for tsc2007
 *
 *  Copyright (C) 2006, Marvell Corporation
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 */

#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/wait.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/freezer.h>
#include <linux/proc_fs.h>
#include <linux/clk.h>
#include <linux/i2c.h>
#include <mach/gpio.h>

#include <linux/sysctl.h>
#include <asm/system.h>

extern int ts_linear_scale(int *x, int *y, int swap_xy);

/* Use MAV filter */
#define TSC_CMD_SETUP 0xb0

/* Use 12-bit */
#define TSC_CMD_X 0xc0
#define TSC_CMD_PLATEX 0x80
#define TSC_CMD_Y 0xd0
#define TSC_CMD_PLATEY 0x90

#define TSC_X_MAX 4096
#define TSC_Y_MAX 4096
#define TSC_X_MIN 0
#define TSC_Y_MIN 0

/* delay time for compute x, y, computed as us */

#define DEBUG
#ifdef DEBUG
#define TS_DEBUG(fmt,args...) printk(KERN_DEBUG fmt, ##args )
#else
#define TS_DEBUG(fmt,args...)
#endif
static int x_min=TSC_X_MIN;
static int y_min=TSC_Y_MIN;
static int x_max=TSC_X_MAX;
static int y_max=TSC_Y_MAX;
static int invert = 0;
static int debounce_time  = 150;
static int init_debounce = true;
static int delay_time = 1;

enum tsc2007_status {
    PEN_UP,
    PEN_DOWN,
};

struct _tsc2007 {
    struct input_dev *dev;
    int x;        /* X sample values */
    int y;        /* Y sample values */

    int status;
    struct work_struct irq_work;
    struct i2c_client *client;
    unsigned long last_touch;
};
struct _tsc2007 *g_tsc2007;

/* update abs params when min and max coordinate values are set */
int tsc2007_proc_minmax(struct ctl_table *table, int write, struct file *filp,
                     void __user *buffer, size_t *lenp, loff_t *ppos)
{
    struct _tsc2007 *tsc2007= g_tsc2007;
    struct input_dev *input = tsc20##->dev;

    /* update value */
    int ret = proc_dointvec(table, write, filp, buffer, lenp, ppos);

    /* updated abs params */
    if (input) {
        TS_DEBUG(KERN_DEBUG "update x_min %d x_max %d"
            " y_min %d y_max %d\n", x_min, x_max,
            y_min, y_max);
        input_set_abs_params(input, ABS_X, x_min, x_max, 0, 0);
        input_set_abs_params(input, ABS_Y, y_min, y_max, 0, 0);
    }
    return ret;
}

static ctl_table tsc2007_proc_table[] = {
    {
        .ctl_name    = CTL_UNNUMBERED,
        .procname    = "x-max",
        .data        = &x_max,
        .maxlen        = sizeof(int),
        .mode        = 0666,
        .proc_handler    = &tsc2007_proc_minmax,
    },
    {
        .ctl_name    = CTL_UNNUMBERED,
        .procname    = "y-max",
        .data        = &y_max,

第二章   项目估算

第一节   历史数据

第二节   评估成本

第三节   相关计算

(1)工作量估算

(2)成本估算

(3)时间估算

第三章   风险评估

第一节   风险识别

第二节   风险应对策略

第四章   项目进度计划

第一节   项目任务分解

第二节   时间安排

第五章   关键问题

第六章   软件配置

第七章   人员组织

第八章   附录

相关推荐