From bcbe1431c382a96c2987699db87dfb1fa584edf1 Mon Sep 17 00:00:00 2001
From: Rohmindo <shalseh@naver.com>
Date: Fri, 3 Jul 2020 07:53:57 +0100
Subject: [PATCH] library management Pi

---
 app                           | Bin 8560 -> 8560 bytes
 app.c                         |   4 +-
 hum/.hum_dev.ko.cmd           |   1 -
 hum/.hum_dev.mod.o.cmd        | 499 -----------------------
 hum/.hum_dev.o.cmd            | 720 ----------------------------------
 hum/.tmp_versions/hum_dev.mod |   3 -
 hum/Makefile                  |  22 --
 hum/Module.symvers            |   0
 hum/hum_dev.c                 | 161 --------
 hum/hum_dev.ko                | Bin 7948 -> 0 bytes
 hum/hum_dev.mod.c             |  48 ---
 hum/hum_dev.mod.o             | Bin 2968 -> 0 bytes
 hum/hum_dev.o                 | Bin 7176 -> 0 bytes
 hum/modules.order             |   1 -
 hydro/hydro_dev.c             | 276 +++++++------
 hydro/hydro_dev.ko            | Bin 7604 -> 7952 bytes
 hydro/hydro_dev.mod.c         |   2 +-
 hydro/hydro_dev.mod.o         | Bin 2972 -> 2972 bytes
 hydro/hydro_dev.o             | Bin 6592 -> 7180 bytes
 smoke/.smoke_dev.o.cmd        |   2 +
 smoke/Makefile                |   3 +-
 smoke/app                     | Bin 0 -> 8088 bytes
 smoke/app.c                   |  24 ++
 smoke/smoke_dev.c             |  96 ++---
 smoke/smoke_dev.ko            | Bin 7792 -> 7644 bytes
 smoke/smoke_dev.mod.c         |   2 +-
 smoke/smoke_dev.mod.o         | Bin 2908 -> 2908 bytes
 smoke/smoke_dev.o             | Bin 7036 -> 6688 bytes
 test                          | Bin 8528 -> 0 bytes
 test.c                        | 125 ------
 30 files changed, 216 insertions(+), 1773 deletions(-)
 delete mode 100644 hum/.hum_dev.ko.cmd
 delete mode 100644 hum/.hum_dev.mod.o.cmd
 delete mode 100644 hum/.hum_dev.o.cmd
 delete mode 100644 hum/.tmp_versions/hum_dev.mod
 delete mode 100644 hum/Makefile
 delete mode 100644 hum/Module.symvers
 delete mode 100644 hum/hum_dev.c
 delete mode 100644 hum/hum_dev.ko
 delete mode 100644 hum/hum_dev.mod.c
 delete mode 100644 hum/hum_dev.mod.o
 delete mode 100644 hum/hum_dev.o
 delete mode 100644 hum/modules.order
 create mode 100755 smoke/app
 create mode 100644 smoke/app.c
 delete mode 100755 test
 delete mode 100644 test.c

diff --git a/app b/app
index ffd39a82d23868102e946a9df71f72db51f68667..30d7d7d7ee3fe0543326c4ae6df15bf0550dac29 100755
GIT binary patch
delta 239
zcmez1^ucL@1!oQ~149lkBSX$a$7I$DUIvDWi7UU09A;dneYJR5#_{JL;!N2T@_d3k
zDmQOoOyTtX!^6m6!pq2TgPW0IFFymr6K+O^FWig_EIf=1B0P)?Dj<0tMur3)Murw1
zMurtUj0_AJ0u5Vu7#ZYSUk9eArKLULVPts2!^rSuaw>N_yP<)e83O~u=J(u{jI1Ai
z{I6%+T*&LsA_#I70|NsCGlKw#Vknt>QE)$F&gO|i{Y-)-yo_K$1_nWf$&3sPC7TUJ
emAM$FPY#urX9elZnOrHa%nDLgvU#EWc}4(|r#z|v

delta 240
zcmez1^ucL@1!o2?149NcBSXeS$7I$LUIvDei7UU0eEIF@(;<}~T>tRtl9EEL#((MO
zWjAkOOyTtX!NbU4z{|*RgPW0I7e52T6K+O^58R9l3_Oes0z8Zi3LtqNMur$3Mur9+
zMusIkj0_AJ0u38@7#ZYSUk9eArKLUKVPts0!^rSqaw>N_vw@!F=Fi-fjErA4=khLQ
zoUFjhvRQzC1Ct=gSquye49pAyAc~=2@<qY@j2W9J3iUGy7Vt8H1sNCw874C_FcfSy
f6jkP8oIE*HUY-@CGh=e4yfQ0DS;6Lo^5+==#w9(r

diff --git a/app.c b/app.c
index ff2f130..4c3e467 100644
--- a/app.c
+++ b/app.c
@@ -45,8 +45,8 @@ int main(void)
 
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
-   server_addr.sin_port = htons(4026);
-   server_addr.sin_addr.s_addr = inet_addr("192.168.0.9");
+   server_addr.sin_port = htons(4029);
+   server_addr.sin_addr.s_addr = inet_addr("192.168.10.6");
 
    if(connect(client_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
 	   printf("connect error\n");
diff --git a/hum/.hum_dev.ko.cmd b/hum/.hum_dev.ko.cmd
deleted file mode 100644
index 22e45f3..0000000
--- a/hum/.hum_dev.ko.cmd
+++ /dev/null
@@ -1 +0,0 @@
-cmd_/home/pi/Desktop/project/hum/hum_dev.ko := ld -r  -EL -T ./scripts/module-common.lds -T ./arch/arm/kernel/module.lds  --build-id  -o /home/pi/Desktop/project/hum/hum_dev.ko /home/pi/Desktop/project/hum/hum_dev.o /home/pi/Desktop/project/hum/hum_dev.mod.o ;  true
diff --git a/hum/.hum_dev.mod.o.cmd b/hum/.hum_dev.mod.o.cmd
deleted file mode 100644
index cadd0cb..0000000
--- a/hum/.hum_dev.mod.o.cmd
+++ /dev/null
@@ -1,499 +0,0 @@
-cmd_/home/pi/Desktop/project/hum/hum_dev.mod.o := gcc -Wp,-MD,/home/pi/Desktop/project/hum/.hum_dev.mod.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/8/include -I./arch/arm/include -I./arch/arm/include/generated  -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mfpu=vfp -funwind-tables -marm -Wa,-mno-warn-deprecated -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned  -DKBUILD_BASENAME='"hum_dev.mod"' -DKBUILD_MODNAME='"hum_dev"' -DMODULE  -c -o /home/pi/Desktop/project/hum/hum_dev.mod.o /home/pi/Desktop/project/hum/hum_dev.mod.c
-
-source_/home/pi/Desktop/project/hum/hum_dev.mod.o := /home/pi/Desktop/project/hum/hum_dev.mod.c
-
-deps_/home/pi/Desktop/project/hum/hum_dev.mod.o := \
-    $(wildcard include/config/module/unload.h) \
-    $(wildcard include/config/retpoline.h) \
-  include/linux/kconfig.h \
-    $(wildcard include/config/cpu/big/endian.h) \
-    $(wildcard include/config/booger.h) \
-    $(wildcard include/config/foo.h) \
-  include/linux/compiler_types.h \
-    $(wildcard include/config/have/arch/compiler/h.h) \
-    $(wildcard include/config/enable/must/check.h) \
-    $(wildcard include/config/arch/supports/optimized/inlining.h) \
-    $(wildcard include/config/optimize/inlining.h) \
-  include/linux/compiler-gcc.h \
-    $(wildcard include/config/arch/use/builtin/bswap.h) \
-  include/linux/build-salt.h \
-    $(wildcard include/config/build/salt.h) \
-  include/linux/elfnote.h \
-  include/linux/elf.h \
-  arch/arm/include/asm/elf.h \
-    $(wildcard include/config/mmu.h) \
-    $(wildcard include/config/vdso.h) \
-  arch/arm/include/asm/auxvec.h \
-  arch/arm/include/uapi/asm/auxvec.h \
-  arch/arm/include/asm/hwcap.h \
-  arch/arm/include/uapi/asm/hwcap.h \
-  arch/arm/include/asm/vdso_datapage.h \
-  arch/arm/include/asm/page.h \
-    $(wildcard include/config/cpu/copy/v4wt.h) \
-    $(wildcard include/config/cpu/copy/v4wb.h) \
-    $(wildcard include/config/cpu/copy/feroceon.h) \
-    $(wildcard include/config/cpu/copy/fa.h) \
-    $(wildcard include/config/cpu/sa1100.h) \
-    $(wildcard include/config/cpu/xscale.h) \
-    $(wildcard include/config/cpu/xsc3.h) \
-    $(wildcard include/config/cpu/copy/v6.h) \
-    $(wildcard include/config/kuser/helpers.h) \
-    $(wildcard include/config/arm/lpae.h) \
-    $(wildcard include/config/have/arch/pfn/valid.h) \
-  arch/arm/include/asm/glue.h \
-  arch/arm/include/asm/pgtable-2level-types.h \
-  arch/arm/include/uapi/asm/types.h \
-  include/asm-generic/int-ll64.h \
-  include/uapi/asm-generic/int-ll64.h \
-  arch/arm/include/generated/uapi/asm/bitsperlong.h \
-  include/asm-generic/bitsperlong.h \
-    $(wildcard include/config/64bit.h) \
-  include/uapi/asm-generic/bitsperlong.h \
-  arch/arm/include/asm/memory.h \
-    $(wildcard include/config/need/mach/memory/h.h) \
-    $(wildcard include/config/page/offset.h) \
-    $(wildcard include/config/thumb2/kernel.h) \
-    $(wildcard include/config/highmem.h) \
-    $(wildcard include/config/smp.h) \
-    $(wildcard include/config/dram/base.h) \
-    $(wildcard include/config/dram/size.h) \
-    $(wildcard include/config/xip/kernel.h) \
-    $(wildcard include/config/have/tcm.h) \
-    $(wildcard include/config/arm/patch/phys/virt.h) \
-    $(wildcard include/config/phys/offset.h) \
-    $(wildcard include/config/xip/phys/addr.h) \
-    $(wildcard include/config/debug/virtual.h) \
-  include/linux/compiler.h \
-    $(wildcard include/config/trace/branch/profiling.h) \
-    $(wildcard include/config/profile/all/branches.h) \
-    $(wildcard include/config/stack/validation.h) \
-    $(wildcard include/config/kasan.h) \
-  include/linux/compiler_types.h \
-  include/uapi/linux/types.h \
-  include/uapi/linux/posix_types.h \
-  include/linux/stddef.h \
-  include/uapi/linux/stddef.h \
-  arch/arm/include/uapi/asm/posix_types.h \
-  include/uapi/asm-generic/posix_types.h \
-  arch/arm/include/asm/barrier.h \
-    $(wildcard include/config/cpu/32v6k.h) \
-    $(wildcard include/config/cpu/fa526.h) \
-    $(wildcard include/config/arm/heavy/mb.h) \
-    $(wildcard include/config/arm/dma/mem/bufferable.h) \
-    $(wildcard include/config/cpu/spectre.h) \
-  include/asm-generic/barrier.h \
-  include/linux/kasan-checks.h \
-  include/linux/const.h \
-  include/uapi/linux/const.h \
-  include/linux/types.h \
-    $(wildcard include/config/have/uid16.h) \
-    $(wildcard include/config/uid16.h) \
-    $(wildcard include/config/lbdaf.h) \
-    $(wildcard include/config/arch/dma/addr/t/64bit.h) \
-    $(wildcard include/config/phys/addr/t/64bit.h) \
-  include/linux/sizes.h \
-  include/asm-generic/memory_model.h \
-    $(wildcard include/config/flatmem.h) \
-    $(wildcard include/config/discontigmem.h) \
-    $(wildcard include/config/sparsemem/vmemmap.h) \
-    $(wildcard include/config/sparsemem.h) \
-  include/linux/pfn.h \
-  include/asm-generic/getorder.h \
-  include/linux/log2.h \
-    $(wildcard include/config/arch/has/ilog2/u32.h) \
-    $(wildcard include/config/arch/has/ilog2/u64.h) \
-  include/linux/bitops.h \
-  include/linux/bits.h \
-  arch/arm/include/asm/bitops.h \
-  include/linux/irqflags.h \
-    $(wildcard include/config/prove/locking.h) \
-    $(wildcard include/config/trace/irqflags.h) \
-    $(wildcard include/config/irqsoff/tracer.h) \
-    $(wildcard include/config/preempt/tracer.h) \
-    $(wildcard include/config/trace/irqflags/support.h) \
-  include/linux/typecheck.h \
-  arch/arm/include/asm/irqflags.h \
-    $(wildcard include/config/cpu/v7m.h) \
-  arch/arm/include/asm/ptrace.h \
-    $(wildcard include/config/arm/thumb.h) \
-  arch/arm/include/uapi/asm/ptrace.h \
-    $(wildcard include/config/cpu/endian/be8.h) \
-  include/asm-generic/irqflags.h \
-  include/asm-generic/bitops/non-atomic.h \
-  include/asm-generic/bitops/builtin-__fls.h \
-  include/asm-generic/bitops/builtin-__ffs.h \
-  include/asm-generic/bitops/builtin-fls.h \
-  include/asm-generic/bitops/builtin-ffs.h \
-  include/asm-generic/bitops/ffz.h \
-  include/asm-generic/bitops/fls64.h \
-  include/asm-generic/bitops/sched.h \
-  include/asm-generic/bitops/hweight.h \
-  include/asm-generic/bitops/arch_hweight.h \
-  include/asm-generic/bitops/const_hweight.h \
-  include/asm-generic/bitops/lock.h \
-  include/linux/atomic.h \
-    $(wildcard include/config/generic/atomic64.h) \
-  arch/arm/include/asm/atomic.h \
-  include/linux/prefetch.h \
-  arch/arm/include/asm/processor.h \
-    $(wildcard include/config/have/hw/breakpoint.h) \
-    $(wildcard include/config/binfmt/elf/fdpic.h) \
-    $(wildcard include/config/arm/errata/754327.h) \
-  arch/arm/include/asm/hw_breakpoint.h \
-  arch/arm/include/asm/unified.h \
-  arch/arm/include/asm/cache.h \
-    $(wildcard include/config/arm/l1/cache/shift.h) \
-    $(wildcard include/config/aeabi.h) \
-  arch/arm/include/asm/cmpxchg.h \
-    $(wildcard include/config/cpu/sa110.h) \
-    $(wildcard include/config/cpu/v6.h) \
-  include/asm-generic/cmpxchg-local.h \
-  include/asm-generic/atomic-long.h \
-  include/asm-generic/bitops/find.h \
-    $(wildcard include/config/generic/find/first/bit.h) \
-  include/asm-generic/bitops/le.h \
-  arch/arm/include/uapi/asm/byteorder.h \
-  include/linux/byteorder/little_endian.h \
-  include/uapi/linux/byteorder/little_endian.h \
-  include/linux/swab.h \
-  include/uapi/linux/swab.h \
-  arch/arm/include/asm/swab.h \
-  arch/arm/include/uapi/asm/swab.h \
-  include/linux/byteorder/generic.h \
-  include/asm-generic/bitops/ext2-atomic-setbit.h \
-  arch/arm/include/asm/user.h \
-  include/uapi/linux/elf.h \
-  include/uapi/linux/elf-em.h \
-  include/linux/module.h \
-    $(wildcard include/config/modules.h) \
-    $(wildcard include/config/sysfs.h) \
-    $(wildcard include/config/modules/tree/lookup.h) \
-    $(wildcard include/config/livepatch.h) \
-    $(wildcard include/config/unused/symbols.h) \
-    $(wildcard include/config/module/sig.h) \
-    $(wildcard include/config/generic/bug.h) \
-    $(wildcard include/config/kallsyms.h) \
-    $(wildcard include/config/tracepoints.h) \
-    $(wildcard include/config/jump/label.h) \
-    $(wildcard include/config/tracing.h) \
-    $(wildcard include/config/event/tracing.h) \
-    $(wildcard include/config/ftrace/mcount/record.h) \
-    $(wildcard include/config/constructors.h) \
-    $(wildcard include/config/function/error/injection.h) \
-    $(wildcard include/config/strict/module/rwx.h) \
-  include/linux/list.h \
-    $(wildcard include/config/debug/list.h) \
-  include/linux/poison.h \
-    $(wildcard include/config/illegal/pointer/value.h) \
-    $(wildcard include/config/page/poisoning/zero.h) \
-  include/linux/kernel.h \
-    $(wildcard include/config/preempt/voluntary.h) \
-    $(wildcard include/config/debug/atomic/sleep.h) \
-    $(wildcard include/config/arch/has/refcount.h) \
-    $(wildcard include/config/panic/timeout.h) \
-  /usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h \
-  include/linux/linkage.h \
-  include/linux/stringify.h \
-  include/linux/export.h \
-    $(wildcard include/config/modversions.h) \
-    $(wildcard include/config/module/rel/crcs.h) \
-    $(wildcard include/config/have/arch/prel32/relocations.h) \
-    $(wildcard include/config/trim/unused/ksyms.h) \
-  arch/arm/include/asm/linkage.h \
-  include/linux/printk.h \
-    $(wildcard include/config/message/loglevel/default.h) \
-    $(wildcard include/config/console/loglevel/default.h) \
-    $(wildcard include/config/console/loglevel/quiet.h) \
-    $(wildcard include/config/early/printk.h) \
-    $(wildcard include/config/printk/nmi.h) \
-    $(wildcard include/config/printk.h) \
-    $(wildcard include/config/dynamic/debug.h) \
-  include/linux/init.h \
-    $(wildcard include/config/strict/kernel/rwx.h) \
-  include/linux/kern_levels.h \
-  include/linux/cache.h \
-    $(wildcard include/config/arch/has/cache/line/size.h) \
-  include/uapi/linux/kernel.h \
-  include/uapi/linux/sysinfo.h \
-  include/linux/build_bug.h \
-  arch/arm/include/asm/div64.h \
-  arch/arm/include/asm/compiler.h \
-  include/asm-generic/div64.h \
-  include/linux/stat.h \
-  arch/arm/include/uapi/asm/stat.h \
-  include/uapi/linux/stat.h \
-  include/linux/time.h \
-    $(wildcard include/config/arch/uses/gettimeoffset.h) \
-  include/linux/seqlock.h \
-    $(wildcard include/config/debug/lock/alloc.h) \
-  include/linux/spinlock.h \
-    $(wildcard include/config/debug/spinlock.h) \
-    $(wildcard include/config/preempt.h) \
-  include/linux/preempt.h \
-    $(wildcard include/config/preempt/count.h) \
-    $(wildcard include/config/debug/preempt.h) \
-    $(wildcard include/config/trace/preempt/toggle.h) \
-    $(wildcard include/config/preempt/notifiers.h) \
-  arch/arm/include/generated/asm/preempt.h \
-  include/asm-generic/preempt.h \
-  include/linux/thread_info.h \
-    $(wildcard include/config/thread/info/in/task.h) \
-    $(wildcard include/config/have/arch/within/stack/frames.h) \
-    $(wildcard include/config/hardened/usercopy.h) \
-  include/linux/bug.h \
-    $(wildcard include/config/bug/on/data/corruption.h) \
-  arch/arm/include/asm/bug.h \
-    $(wildcard include/config/debug/bugverbose.h) \
-  arch/arm/include/asm/opcodes.h \
-    $(wildcard include/config/cpu/endian/be32.h) \
-  include/asm-generic/bug.h \
-    $(wildcard include/config/bug.h) \
-    $(wildcard include/config/generic/bug/relative/pointers.h) \
-  include/linux/restart_block.h \
-  include/linux/time64.h \
-    $(wildcard include/config/64bit/time.h) \
-  include/linux/math64.h \
-    $(wildcard include/config/arch/supports/int128.h) \
-  include/uapi/linux/time.h \
-  arch/arm/include/asm/thread_info.h \
-    $(wildcard include/config/crunch.h) \
-    $(wildcard include/config/arm/thumbee.h) \
-  arch/arm/include/asm/fpstate.h \
-    $(wildcard include/config/vfpv3.h) \
-    $(wildcard include/config/iwmmxt.h) \
-  include/linux/bottom_half.h \
-  include/linux/spinlock_types.h \
-  arch/arm/include/asm/spinlock_types.h \
-  include/linux/lockdep.h \
-    $(wildcard include/config/lockdep.h) \
-    $(wildcard include/config/lock/stat.h) \
-  include/linux/rwlock_types.h \
-  arch/arm/include/asm/spinlock.h \
-  include/linux/rwlock.h \
-  include/linux/spinlock_api_smp.h \
-    $(wildcard include/config/inline/spin/lock.h) \
-    $(wildcard include/config/inline/spin/lock/bh.h) \
-    $(wildcard include/config/inline/spin/lock/irq.h) \
-    $(wildcard include/config/inline/spin/lock/irqsave.h) \
-    $(wildcard include/config/inline/spin/trylock.h) \
-    $(wildcard include/config/inline/spin/trylock/bh.h) \
-    $(wildcard include/config/uninline/spin/unlock.h) \
-    $(wildcard include/config/inline/spin/unlock/bh.h) \
-    $(wildcard include/config/inline/spin/unlock/irq.h) \
-    $(wildcard include/config/inline/spin/unlock/irqrestore.h) \
-    $(wildcard include/config/generic/lockbreak.h) \
-  include/linux/rwlock_api_smp.h \
-    $(wildcard include/config/inline/read/lock.h) \
-    $(wildcard include/config/inline/write/lock.h) \
-    $(wildcard include/config/inline/read/lock/bh.h) \
-    $(wildcard include/config/inline/write/lock/bh.h) \
-    $(wildcard include/config/inline/read/lock/irq.h) \
-    $(wildcard include/config/inline/write/lock/irq.h) \
-    $(wildcard include/config/inline/read/lock/irqsave.h) \
-    $(wildcard include/config/inline/write/lock/irqsave.h) \
-    $(wildcard include/config/inline/read/trylock.h) \
-    $(wildcard include/config/inline/write/trylock.h) \
-    $(wildcard include/config/inline/read/unlock.h) \
-    $(wildcard include/config/inline/write/unlock.h) \
-    $(wildcard include/config/inline/read/unlock/bh.h) \
-    $(wildcard include/config/inline/write/unlock/bh.h) \
-    $(wildcard include/config/inline/read/unlock/irq.h) \
-    $(wildcard include/config/inline/write/unlock/irq.h) \
-    $(wildcard include/config/inline/read/unlock/irqrestore.h) \
-    $(wildcard include/config/inline/write/unlock/irqrestore.h) \
-  include/linux/time32.h \
-  include/linux/uidgid.h \
-    $(wildcard include/config/multiuser.h) \
-    $(wildcard include/config/user/ns.h) \
-  include/linux/highuid.h \
-  include/linux/kmod.h \
-  include/linux/umh.h \
-  include/linux/gfp.h \
-    $(wildcard include/config/zone/dma.h) \
-    $(wildcard include/config/zone/dma32.h) \
-    $(wildcard include/config/zone/device.h) \
-    $(wildcard include/config/numa.h) \
-    $(wildcard include/config/pm/sleep.h) \
-    $(wildcard include/config/memory/isolation.h) \
-    $(wildcard include/config/compaction.h) \
-    $(wildcard include/config/cma.h) \
-  include/linux/mmdebug.h \
-    $(wildcard include/config/debug/vm.h) \
-    $(wildcard include/config/debug/vm/pgflags.h) \
-  include/linux/mmzone.h \
-    $(wildcard include/config/force/max/zoneorder.h) \
-    $(wildcard include/config/zsmalloc.h) \
-    $(wildcard include/config/memcg.h) \
-    $(wildcard include/config/memory/hotplug.h) \
-    $(wildcard include/config/flat/node/mem/map.h) \
-    $(wildcard include/config/page/extension.h) \
-    $(wildcard include/config/no/bootmem.h) \
-    $(wildcard include/config/deferred/struct/page/init.h) \
-    $(wildcard include/config/transparent/hugepage.h) \
-    $(wildcard include/config/have/memory/present.h) \
-    $(wildcard include/config/have/memoryless/nodes.h) \
-    $(wildcard include/config/have/memblock/node/map.h) \
-    $(wildcard include/config/need/multiple/nodes.h) \
-    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
-    $(wildcard include/config/sparsemem/extreme.h) \
-    $(wildcard include/config/memory/hotremove.h) \
-    $(wildcard include/config/holes/in/zone.h) \
-    $(wildcard include/config/arch/has/holes/memorymodel.h) \
-  include/linux/wait.h \
-  arch/arm/include/generated/asm/current.h \
-  include/asm-generic/current.h \
-  include/uapi/linux/wait.h \
-  include/linux/threads.h \
-    $(wildcard include/config/nr/cpus.h) \
-    $(wildcard include/config/base/small.h) \
-  include/linux/numa.h \
-    $(wildcard include/config/nodes/shift.h) \
-  include/linux/nodemask.h \
-  include/linux/bitmap.h \
-  include/linux/string.h \
-    $(wildcard include/config/binary/printf.h) \
-    $(wildcard include/config/fortify/source.h) \
-  include/uapi/linux/string.h \
-  arch/arm/include/asm/string.h \
-    $(wildcard include/config/bcm2835/fast/memcpy.h) \
-  include/linux/pageblock-flags.h \
-    $(wildcard include/config/hugetlb/page.h) \
-    $(wildcard include/config/hugetlb/page/size/variable.h) \
-  include/linux/page-flags-layout.h \
-    $(wildcard include/config/numa/balancing.h) \
-  include/generated/bounds.h \
-  include/linux/memory_hotplug.h \
-    $(wildcard include/config/arch/has/add/pages.h) \
-    $(wildcard include/config/have/arch/nodedata/extension.h) \
-    $(wildcard include/config/have/bootmem/info/node.h) \
-  include/linux/notifier.h \
-    $(wildcard include/config/tree/srcu.h) \
-  include/linux/errno.h \
-  include/uapi/linux/errno.h \
-  arch/arm/include/generated/uapi/asm/errno.h \
-  include/uapi/asm-generic/errno.h \
-  include/uapi/asm-generic/errno-base.h \
-  include/linux/mutex.h \
-    $(wildcard include/config/mutex/spin/on/owner.h) \
-    $(wildcard include/config/debug/mutexes.h) \
-  include/linux/osq_lock.h \
-  include/linux/debug_locks.h \
-    $(wildcard include/config/debug/locking/api/selftests.h) \
-  include/linux/rwsem.h \
-    $(wildcard include/config/rwsem/spin/on/owner.h) \
-    $(wildcard include/config/rwsem/generic/spinlock.h) \
-  include/linux/err.h \
-  arch/arm/include/generated/asm/rwsem.h \
-  include/asm-generic/rwsem.h \
-  include/linux/srcu.h \
-    $(wildcard include/config/tiny/srcu.h) \
-    $(wildcard include/config/srcu.h) \
-  include/linux/rcupdate.h \
-    $(wildcard include/config/preempt/rcu.h) \
-    $(wildcard include/config/rcu/stall/common.h) \
-    $(wildcard include/config/no/hz/full.h) \
-    $(wildcard include/config/rcu/nocb/cpu.h) \
-    $(wildcard include/config/tasks/rcu.h) \
-    $(wildcard include/config/tree/rcu.h) \
-    $(wildcard include/config/tiny/rcu.h) \
-    $(wildcard include/config/debug/objects/rcu/head.h) \
-    $(wildcard include/config/hotplug/cpu.h) \
-    $(wildcard include/config/prove/rcu.h) \
-    $(wildcard include/config/rcu/boost.h) \
-    $(wildcard include/config/arch/weak/release/acquire.h) \
-  include/linux/cpumask.h \
-    $(wildcard include/config/cpumask/offstack.h) \
-    $(wildcard include/config/debug/per/cpu/maps.h) \
-  include/linux/rcutree.h \
-  include/linux/workqueue.h \
-    $(wildcard include/config/debug/objects/work.h) \
-    $(wildcard include/config/freezer.h) \
-    $(wildcard include/config/wq/watchdog.h) \
-  include/linux/timer.h \
-    $(wildcard include/config/debug/objects/timers.h) \
-    $(wildcard include/config/no/hz/common.h) \
-  include/linux/ktime.h \
-  include/linux/jiffies.h \
-  include/linux/timex.h \
-  include/uapi/linux/timex.h \
-  include/uapi/linux/param.h \
-  arch/arm/include/generated/uapi/asm/param.h \
-  include/asm-generic/param.h \
-    $(wildcard include/config/hz.h) \
-  include/uapi/asm-generic/param.h \
-  arch/arm/include/asm/timex.h \
-  include/generated/timeconst.h \
-  include/linux/timekeeping.h \
-  include/linux/timekeeping32.h \
-  include/linux/debugobjects.h \
-    $(wildcard include/config/debug/objects.h) \
-    $(wildcard include/config/debug/objects/free.h) \
-  include/linux/rcu_segcblist.h \
-  include/linux/srcutree.h \
-  include/linux/rcu_node_tree.h \
-    $(wildcard include/config/rcu/fanout.h) \
-    $(wildcard include/config/rcu/fanout/leaf.h) \
-  include/linux/completion.h \
-  include/linux/topology.h \
-    $(wildcard include/config/use/percpu/numa/node/id.h) \
-    $(wildcard include/config/sched/smt.h) \
-  include/linux/smp.h \
-    $(wildcard include/config/up/late/init.h) \
-  include/linux/llist.h \
-    $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \
-  arch/arm/include/asm/smp.h \
-  include/linux/percpu.h \
-    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
-    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
-    $(wildcard include/config/have/setup/per/cpu/area.h) \
-  arch/arm/include/asm/percpu.h \
-  include/asm-generic/percpu.h \
-  include/linux/percpu-defs.h \
-    $(wildcard include/config/debug/force/weak/per/cpu.h) \
-    $(wildcard include/config/virtualization.h) \
-    $(wildcard include/config/amd/mem/encrypt.h) \
-  arch/arm/include/asm/topology.h \
-    $(wildcard include/config/arm/cpu/topology.h) \
-  include/linux/arch_topology.h \
-  include/asm-generic/topology.h \
-  include/linux/sysctl.h \
-    $(wildcard include/config/sysctl.h) \
-  include/linux/rbtree.h \
-  include/uapi/linux/sysctl.h \
-  include/linux/kobject.h \
-    $(wildcard include/config/uevent/helper.h) \
-    $(wildcard include/config/debug/kobject/release.h) \
-  include/linux/sysfs.h \
-  include/linux/kernfs.h \
-    $(wildcard include/config/kernfs.h) \
-  include/linux/idr.h \
-  include/linux/radix-tree.h \
-    $(wildcard include/config/radix/tree/multiorder.h) \
-  include/linux/kobject_ns.h \
-  include/linux/kref.h \
-  include/linux/refcount.h \
-    $(wildcard include/config/refcount/full.h) \
-  include/linux/moduleparam.h \
-    $(wildcard include/config/alpha.h) \
-    $(wildcard include/config/ia64.h) \
-    $(wildcard include/config/ppc64.h) \
-  include/linux/jump_label.h \
-  arch/arm/include/asm/jump_label.h \
-  include/linux/rbtree_latch.h \
-  include/linux/error-injection.h \
-  include/asm-generic/error-injection.h \
-  include/linux/tracepoint-defs.h \
-  include/linux/static_key.h \
-  arch/arm/include/asm/module.h \
-    $(wildcard include/config/arm/unwind.h) \
-    $(wildcard include/config/arm/module/plts.h) \
-  include/asm-generic/module.h \
-    $(wildcard include/config/have/mod/arch/specific.h) \
-    $(wildcard include/config/modules/use/elf/rel.h) \
-    $(wildcard include/config/modules/use/elf/rela.h) \
-  include/linux/vermagic.h \
-  include/generated/utsrelease.h \
-
-/home/pi/Desktop/project/hum/hum_dev.mod.o: $(deps_/home/pi/Desktop/project/hum/hum_dev.mod.o)
-
-$(deps_/home/pi/Desktop/project/hum/hum_dev.mod.o):
diff --git a/hum/.hum_dev.o.cmd b/hum/.hum_dev.o.cmd
deleted file mode 100644
index 01a0f2e..0000000
--- a/hum/.hum_dev.o.cmd
+++ /dev/null
@@ -1,720 +0,0 @@
-cmd_/home/pi/Desktop/project/hum/hum_dev.o := gcc -Wp,-MD,/home/pi/Desktop/project/hum/.hum_dev.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/8/include -I./arch/arm/include -I./arch/arm/include/generated  -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mfpu=vfp -funwind-tables -marm -Wa,-mno-warn-deprecated -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned  -DMODULE  -DKBUILD_BASENAME='"hum_dev"' -DKBUILD_MODNAME='"hum_dev"' -c -o /home/pi/Desktop/project/hum/.tmp_hum_dev.o /home/pi/Desktop/project/hum/hum_dev.c
-
-source_/home/pi/Desktop/project/hum/hum_dev.o := /home/pi/Desktop/project/hum/hum_dev.c
-
-deps_/home/pi/Desktop/project/hum/hum_dev.o := \
-  include/linux/kconfig.h \
-    $(wildcard include/config/cpu/big/endian.h) \
-    $(wildcard include/config/booger.h) \
-    $(wildcard include/config/foo.h) \
-  include/linux/compiler_types.h \
-    $(wildcard include/config/have/arch/compiler/h.h) \
-    $(wildcard include/config/enable/must/check.h) \
-    $(wildcard include/config/arch/supports/optimized/inlining.h) \
-    $(wildcard include/config/optimize/inlining.h) \
-  include/linux/compiler-gcc.h \
-    $(wildcard include/config/retpoline.h) \
-    $(wildcard include/config/arch/use/builtin/bswap.h) \
-  include/linux/init.h \
-    $(wildcard include/config/have/arch/prel32/relocations.h) \
-    $(wildcard include/config/strict/kernel/rwx.h) \
-    $(wildcard include/config/strict/module/rwx.h) \
-  include/linux/compiler.h \
-    $(wildcard include/config/trace/branch/profiling.h) \
-    $(wildcard include/config/profile/all/branches.h) \
-    $(wildcard include/config/stack/validation.h) \
-    $(wildcard include/config/kasan.h) \
-  include/linux/compiler_types.h \
-  include/uapi/linux/types.h \
-  arch/arm/include/uapi/asm/types.h \
-  include/asm-generic/int-ll64.h \
-  include/uapi/asm-generic/int-ll64.h \
-  arch/arm/include/generated/uapi/asm/bitsperlong.h \
-  include/asm-generic/bitsperlong.h \
-    $(wildcard include/config/64bit.h) \
-  include/uapi/asm-generic/bitsperlong.h \
-  include/uapi/linux/posix_types.h \
-  include/linux/stddef.h \
-  include/uapi/linux/stddef.h \
-  arch/arm/include/uapi/asm/posix_types.h \
-  include/uapi/asm-generic/posix_types.h \
-  arch/arm/include/asm/barrier.h \
-    $(wildcard include/config/cpu/32v6k.h) \
-    $(wildcard include/config/thumb2/kernel.h) \
-    $(wildcard include/config/cpu/xsc3.h) \
-    $(wildcard include/config/cpu/fa526.h) \
-    $(wildcard include/config/arm/heavy/mb.h) \
-    $(wildcard include/config/arm/dma/mem/bufferable.h) \
-    $(wildcard include/config/smp.h) \
-    $(wildcard include/config/cpu/spectre.h) \
-  include/asm-generic/barrier.h \
-  include/linux/kasan-checks.h \
-  include/linux/types.h \
-    $(wildcard include/config/have/uid16.h) \
-    $(wildcard include/config/uid16.h) \
-    $(wildcard include/config/lbdaf.h) \
-    $(wildcard include/config/arch/dma/addr/t/64bit.h) \
-    $(wildcard include/config/phys/addr/t/64bit.h) \
-  include/linux/kernel.h \
-    $(wildcard include/config/preempt/voluntary.h) \
-    $(wildcard include/config/debug/atomic/sleep.h) \
-    $(wildcard include/config/mmu.h) \
-    $(wildcard include/config/prove/locking.h) \
-    $(wildcard include/config/arch/has/refcount.h) \
-    $(wildcard include/config/panic/timeout.h) \
-    $(wildcard include/config/tracing.h) \
-    $(wildcard include/config/ftrace/mcount/record.h) \
-  /usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h \
-  include/linux/linkage.h \
-  include/linux/stringify.h \
-  include/linux/export.h \
-    $(wildcard include/config/modules.h) \
-    $(wildcard include/config/modversions.h) \
-    $(wildcard include/config/module/rel/crcs.h) \
-    $(wildcard include/config/trim/unused/ksyms.h) \
-    $(wildcard include/config/unused/symbols.h) \
-  arch/arm/include/asm/linkage.h \
-  include/linux/bitops.h \
-  include/linux/bits.h \
-  arch/arm/include/asm/bitops.h \
-  include/linux/irqflags.h \
-    $(wildcard include/config/trace/irqflags.h) \
-    $(wildcard include/config/irqsoff/tracer.h) \
-    $(wildcard include/config/preempt/tracer.h) \
-    $(wildcard include/config/trace/irqflags/support.h) \
-  include/linux/typecheck.h \
-  arch/arm/include/asm/irqflags.h \
-    $(wildcard include/config/cpu/v7m.h) \
-  arch/arm/include/asm/ptrace.h \
-    $(wildcard include/config/arm/thumb.h) \
-  arch/arm/include/uapi/asm/ptrace.h \
-    $(wildcard include/config/cpu/endian/be8.h) \
-  arch/arm/include/asm/hwcap.h \
-  arch/arm/include/uapi/asm/hwcap.h \
-  include/asm-generic/irqflags.h \
-  include/asm-generic/bitops/non-atomic.h \
-  include/asm-generic/bitops/builtin-__fls.h \
-  include/asm-generic/bitops/builtin-__ffs.h \
-  include/asm-generic/bitops/builtin-fls.h \
-  include/asm-generic/bitops/builtin-ffs.h \
-  include/asm-generic/bitops/ffz.h \
-  include/asm-generic/bitops/fls64.h \
-  include/asm-generic/bitops/sched.h \
-  include/asm-generic/bitops/hweight.h \
-  include/asm-generic/bitops/arch_hweight.h \
-  include/asm-generic/bitops/const_hweight.h \
-  include/asm-generic/bitops/lock.h \
-  include/linux/atomic.h \
-    $(wildcard include/config/generic/atomic64.h) \
-  arch/arm/include/asm/atomic.h \
-    $(wildcard include/config/arm/lpae.h) \
-  include/linux/prefetch.h \
-  arch/arm/include/asm/processor.h \
-    $(wildcard include/config/have/hw/breakpoint.h) \
-    $(wildcard include/config/binfmt/elf/fdpic.h) \
-    $(wildcard include/config/arm/errata/754327.h) \
-  arch/arm/include/asm/hw_breakpoint.h \
-  arch/arm/include/asm/unified.h \
-  arch/arm/include/asm/cache.h \
-    $(wildcard include/config/arm/l1/cache/shift.h) \
-    $(wildcard include/config/aeabi.h) \
-  arch/arm/include/asm/cmpxchg.h \
-    $(wildcard include/config/cpu/sa1100.h) \
-    $(wildcard include/config/cpu/sa110.h) \
-    $(wildcard include/config/cpu/v6.h) \
-  include/asm-generic/cmpxchg-local.h \
-  include/asm-generic/atomic-long.h \
-  include/asm-generic/bitops/find.h \
-    $(wildcard include/config/generic/find/first/bit.h) \
-  include/asm-generic/bitops/le.h \
-  arch/arm/include/uapi/asm/byteorder.h \
-  include/linux/byteorder/little_endian.h \
-  include/uapi/linux/byteorder/little_endian.h \
-  include/linux/swab.h \
-  include/uapi/linux/swab.h \
-  arch/arm/include/asm/swab.h \
-  arch/arm/include/uapi/asm/swab.h \
-  include/linux/byteorder/generic.h \
-  include/asm-generic/bitops/ext2-atomic-setbit.h \
-  include/linux/log2.h \
-    $(wildcard include/config/arch/has/ilog2/u32.h) \
-    $(wildcard include/config/arch/has/ilog2/u64.h) \
-  include/linux/printk.h \
-    $(wildcard include/config/message/loglevel/default.h) \
-    $(wildcard include/config/console/loglevel/default.h) \
-    $(wildcard include/config/console/loglevel/quiet.h) \
-    $(wildcard include/config/early/printk.h) \
-    $(wildcard include/config/printk/nmi.h) \
-    $(wildcard include/config/printk.h) \
-    $(wildcard include/config/dynamic/debug.h) \
-  include/linux/kern_levels.h \
-  include/linux/cache.h \
-    $(wildcard include/config/arch/has/cache/line/size.h) \
-  include/uapi/linux/kernel.h \
-  include/uapi/linux/sysinfo.h \
-  include/linux/build_bug.h \
-  arch/arm/include/asm/div64.h \
-  arch/arm/include/asm/compiler.h \
-  include/asm-generic/div64.h \
-  include/linux/module.h \
-    $(wildcard include/config/sysfs.h) \
-    $(wildcard include/config/modules/tree/lookup.h) \
-    $(wildcard include/config/livepatch.h) \
-    $(wildcard include/config/module/sig.h) \
-    $(wildcard include/config/generic/bug.h) \
-    $(wildcard include/config/kallsyms.h) \
-    $(wildcard include/config/tracepoints.h) \
-    $(wildcard include/config/jump/label.h) \
-    $(wildcard include/config/event/tracing.h) \
-    $(wildcard include/config/module/unload.h) \
-    $(wildcard include/config/constructors.h) \
-    $(wildcard include/config/function/error/injection.h) \
-  include/linux/list.h \
-    $(wildcard include/config/debug/list.h) \
-  include/linux/poison.h \
-    $(wildcard include/config/illegal/pointer/value.h) \
-    $(wildcard include/config/page/poisoning/zero.h) \
-  include/linux/const.h \
-  include/uapi/linux/const.h \
-  include/linux/stat.h \
-  arch/arm/include/uapi/asm/stat.h \
-  include/uapi/linux/stat.h \
-  include/linux/time.h \
-    $(wildcard include/config/arch/uses/gettimeoffset.h) \
-  include/linux/seqlock.h \
-    $(wildcard include/config/debug/lock/alloc.h) \
-  include/linux/spinlock.h \
-    $(wildcard include/config/debug/spinlock.h) \
-    $(wildcard include/config/preempt.h) \
-  include/linux/preempt.h \
-    $(wildcard include/config/preempt/count.h) \
-    $(wildcard include/config/debug/preempt.h) \
-    $(wildcard include/config/trace/preempt/toggle.h) \
-    $(wildcard include/config/preempt/notifiers.h) \
-  arch/arm/include/generated/asm/preempt.h \
-  include/asm-generic/preempt.h \
-  include/linux/thread_info.h \
-    $(wildcard include/config/thread/info/in/task.h) \
-    $(wildcard include/config/have/arch/within/stack/frames.h) \
-    $(wildcard include/config/hardened/usercopy.h) \
-  include/linux/bug.h \
-    $(wildcard include/config/bug/on/data/corruption.h) \
-  arch/arm/include/asm/bug.h \
-    $(wildcard include/config/debug/bugverbose.h) \
-  arch/arm/include/asm/opcodes.h \
-    $(wildcard include/config/cpu/endian/be32.h) \
-  include/asm-generic/bug.h \
-    $(wildcard include/config/bug.h) \
-    $(wildcard include/config/generic/bug/relative/pointers.h) \
-  include/linux/restart_block.h \
-  include/linux/time64.h \
-    $(wildcard include/config/64bit/time.h) \
-  include/linux/math64.h \
-    $(wildcard include/config/arch/supports/int128.h) \
-  include/uapi/linux/time.h \
-  arch/arm/include/asm/thread_info.h \
-    $(wildcard include/config/crunch.h) \
-    $(wildcard include/config/arm/thumbee.h) \
-  arch/arm/include/asm/fpstate.h \
-    $(wildcard include/config/vfpv3.h) \
-    $(wildcard include/config/iwmmxt.h) \
-  arch/arm/include/asm/page.h \
-    $(wildcard include/config/cpu/copy/v4wt.h) \
-    $(wildcard include/config/cpu/copy/v4wb.h) \
-    $(wildcard include/config/cpu/copy/feroceon.h) \
-    $(wildcard include/config/cpu/copy/fa.h) \
-    $(wildcard include/config/cpu/xscale.h) \
-    $(wildcard include/config/cpu/copy/v6.h) \
-    $(wildcard include/config/kuser/helpers.h) \
-    $(wildcard include/config/have/arch/pfn/valid.h) \
-  arch/arm/include/asm/glue.h \
-  arch/arm/include/asm/pgtable-2level-types.h \
-  arch/arm/include/asm/memory.h \
-    $(wildcard include/config/need/mach/memory/h.h) \
-    $(wildcard include/config/page/offset.h) \
-    $(wildcard include/config/highmem.h) \
-    $(wildcard include/config/dram/base.h) \
-    $(wildcard include/config/dram/size.h) \
-    $(wildcard include/config/xip/kernel.h) \
-    $(wildcard include/config/have/tcm.h) \
-    $(wildcard include/config/arm/patch/phys/virt.h) \
-    $(wildcard include/config/phys/offset.h) \
-    $(wildcard include/config/xip/phys/addr.h) \
-    $(wildcard include/config/debug/virtual.h) \
-  include/linux/sizes.h \
-  include/asm-generic/memory_model.h \
-    $(wildcard include/config/flatmem.h) \
-    $(wildcard include/config/discontigmem.h) \
-    $(wildcard include/config/sparsemem/vmemmap.h) \
-    $(wildcard include/config/sparsemem.h) \
-  include/linux/pfn.h \
-  include/asm-generic/getorder.h \
-  include/linux/bottom_half.h \
-  include/linux/spinlock_types.h \
-  arch/arm/include/asm/spinlock_types.h \
-  include/linux/lockdep.h \
-    $(wildcard include/config/lockdep.h) \
-    $(wildcard include/config/lock/stat.h) \
-  include/linux/rwlock_types.h \
-  arch/arm/include/asm/spinlock.h \
-  include/linux/rwlock.h \
-  include/linux/spinlock_api_smp.h \
-    $(wildcard include/config/inline/spin/lock.h) \
-    $(wildcard include/config/inline/spin/lock/bh.h) \
-    $(wildcard include/config/inline/spin/lock/irq.h) \
-    $(wildcard include/config/inline/spin/lock/irqsave.h) \
-    $(wildcard include/config/inline/spin/trylock.h) \
-    $(wildcard include/config/inline/spin/trylock/bh.h) \
-    $(wildcard include/config/uninline/spin/unlock.h) \
-    $(wildcard include/config/inline/spin/unlock/bh.h) \
-    $(wildcard include/config/inline/spin/unlock/irq.h) \
-    $(wildcard include/config/inline/spin/unlock/irqrestore.h) \
-    $(wildcard include/config/generic/lockbreak.h) \
-  include/linux/rwlock_api_smp.h \
-    $(wildcard include/config/inline/read/lock.h) \
-    $(wildcard include/config/inline/write/lock.h) \
-    $(wildcard include/config/inline/read/lock/bh.h) \
-    $(wildcard include/config/inline/write/lock/bh.h) \
-    $(wildcard include/config/inline/read/lock/irq.h) \
-    $(wildcard include/config/inline/write/lock/irq.h) \
-    $(wildcard include/config/inline/read/lock/irqsave.h) \
-    $(wildcard include/config/inline/write/lock/irqsave.h) \
-    $(wildcard include/config/inline/read/trylock.h) \
-    $(wildcard include/config/inline/write/trylock.h) \
-    $(wildcard include/config/inline/read/unlock.h) \
-    $(wildcard include/config/inline/write/unlock.h) \
-    $(wildcard include/config/inline/read/unlock/bh.h) \
-    $(wildcard include/config/inline/write/unlock/bh.h) \
-    $(wildcard include/config/inline/read/unlock/irq.h) \
-    $(wildcard include/config/inline/write/unlock/irq.h) \
-    $(wildcard include/config/inline/read/unlock/irqrestore.h) \
-    $(wildcard include/config/inline/write/unlock/irqrestore.h) \
-  include/linux/time32.h \
-  include/linux/uidgid.h \
-    $(wildcard include/config/multiuser.h) \
-    $(wildcard include/config/user/ns.h) \
-  include/linux/highuid.h \
-  include/linux/kmod.h \
-  include/linux/umh.h \
-  include/linux/gfp.h \
-    $(wildcard include/config/zone/dma.h) \
-    $(wildcard include/config/zone/dma32.h) \
-    $(wildcard include/config/zone/device.h) \
-    $(wildcard include/config/numa.h) \
-    $(wildcard include/config/pm/sleep.h) \
-    $(wildcard include/config/memory/isolation.h) \
-    $(wildcard include/config/compaction.h) \
-    $(wildcard include/config/cma.h) \
-  include/linux/mmdebug.h \
-    $(wildcard include/config/debug/vm.h) \
-    $(wildcard include/config/debug/vm/pgflags.h) \
-  include/linux/mmzone.h \
-    $(wildcard include/config/force/max/zoneorder.h) \
-    $(wildcard include/config/zsmalloc.h) \
-    $(wildcard include/config/memcg.h) \
-    $(wildcard include/config/memory/hotplug.h) \
-    $(wildcard include/config/flat/node/mem/map.h) \
-    $(wildcard include/config/page/extension.h) \
-    $(wildcard include/config/no/bootmem.h) \
-    $(wildcard include/config/deferred/struct/page/init.h) \
-    $(wildcard include/config/transparent/hugepage.h) \
-    $(wildcard include/config/have/memory/present.h) \
-    $(wildcard include/config/have/memoryless/nodes.h) \
-    $(wildcard include/config/have/memblock/node/map.h) \
-    $(wildcard include/config/need/multiple/nodes.h) \
-    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
-    $(wildcard include/config/sparsemem/extreme.h) \
-    $(wildcard include/config/memory/hotremove.h) \
-    $(wildcard include/config/holes/in/zone.h) \
-    $(wildcard include/config/arch/has/holes/memorymodel.h) \
-  include/linux/wait.h \
-  arch/arm/include/generated/asm/current.h \
-  include/asm-generic/current.h \
-  include/uapi/linux/wait.h \
-  include/linux/threads.h \
-    $(wildcard include/config/nr/cpus.h) \
-    $(wildcard include/config/base/small.h) \
-  include/linux/numa.h \
-    $(wildcard include/config/nodes/shift.h) \
-  include/linux/nodemask.h \
-  include/linux/bitmap.h \
-  include/linux/string.h \
-    $(wildcard include/config/binary/printf.h) \
-    $(wildcard include/config/fortify/source.h) \
-  include/uapi/linux/string.h \
-  arch/arm/include/asm/string.h \
-    $(wildcard include/config/bcm2835/fast/memcpy.h) \
-  include/linux/pageblock-flags.h \
-    $(wildcard include/config/hugetlb/page.h) \
-    $(wildcard include/config/hugetlb/page/size/variable.h) \
-  include/linux/page-flags-layout.h \
-    $(wildcard include/config/numa/balancing.h) \
-  include/generated/bounds.h \
-  include/linux/memory_hotplug.h \
-    $(wildcard include/config/arch/has/add/pages.h) \
-    $(wildcard include/config/have/arch/nodedata/extension.h) \
-    $(wildcard include/config/have/bootmem/info/node.h) \
-  include/linux/notifier.h \
-    $(wildcard include/config/tree/srcu.h) \
-  include/linux/errno.h \
-  include/uapi/linux/errno.h \
-  arch/arm/include/generated/uapi/asm/errno.h \
-  include/uapi/asm-generic/errno.h \
-  include/uapi/asm-generic/errno-base.h \
-  include/linux/mutex.h \
-    $(wildcard include/config/mutex/spin/on/owner.h) \
-    $(wildcard include/config/debug/mutexes.h) \
-  include/linux/osq_lock.h \
-  include/linux/debug_locks.h \
-    $(wildcard include/config/debug/locking/api/selftests.h) \
-  include/linux/rwsem.h \
-    $(wildcard include/config/rwsem/spin/on/owner.h) \
-    $(wildcard include/config/rwsem/generic/spinlock.h) \
-  include/linux/err.h \
-  arch/arm/include/generated/asm/rwsem.h \
-  include/asm-generic/rwsem.h \
-  include/linux/srcu.h \
-    $(wildcard include/config/tiny/srcu.h) \
-    $(wildcard include/config/srcu.h) \
-  include/linux/rcupdate.h \
-    $(wildcard include/config/preempt/rcu.h) \
-    $(wildcard include/config/rcu/stall/common.h) \
-    $(wildcard include/config/no/hz/full.h) \
-    $(wildcard include/config/rcu/nocb/cpu.h) \
-    $(wildcard include/config/tasks/rcu.h) \
-    $(wildcard include/config/tree/rcu.h) \
-    $(wildcard include/config/tiny/rcu.h) \
-    $(wildcard include/config/debug/objects/rcu/head.h) \
-    $(wildcard include/config/hotplug/cpu.h) \
-    $(wildcard include/config/prove/rcu.h) \
-    $(wildcard include/config/rcu/boost.h) \
-    $(wildcard include/config/arch/weak/release/acquire.h) \
-  include/linux/cpumask.h \
-    $(wildcard include/config/cpumask/offstack.h) \
-    $(wildcard include/config/debug/per/cpu/maps.h) \
-  include/linux/rcutree.h \
-  include/linux/workqueue.h \
-    $(wildcard include/config/debug/objects/work.h) \
-    $(wildcard include/config/freezer.h) \
-    $(wildcard include/config/wq/watchdog.h) \
-  include/linux/timer.h \
-    $(wildcard include/config/debug/objects/timers.h) \
-    $(wildcard include/config/no/hz/common.h) \
-  include/linux/ktime.h \
-  include/linux/jiffies.h \
-  include/linux/timex.h \
-  include/uapi/linux/timex.h \
-  include/uapi/linux/param.h \
-  arch/arm/include/generated/uapi/asm/param.h \
-  include/asm-generic/param.h \
-    $(wildcard include/config/hz.h) \
-  include/uapi/asm-generic/param.h \
-  arch/arm/include/asm/timex.h \
-  include/generated/timeconst.h \
-  include/linux/timekeeping.h \
-  include/linux/timekeeping32.h \
-  include/linux/debugobjects.h \
-    $(wildcard include/config/debug/objects.h) \
-    $(wildcard include/config/debug/objects/free.h) \
-  include/linux/rcu_segcblist.h \
-  include/linux/srcutree.h \
-  include/linux/rcu_node_tree.h \
-    $(wildcard include/config/rcu/fanout.h) \
-    $(wildcard include/config/rcu/fanout/leaf.h) \
-  include/linux/completion.h \
-  include/linux/topology.h \
-    $(wildcard include/config/use/percpu/numa/node/id.h) \
-    $(wildcard include/config/sched/smt.h) \
-  include/linux/smp.h \
-    $(wildcard include/config/up/late/init.h) \
-  include/linux/llist.h \
-    $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \
-  arch/arm/include/asm/smp.h \
-  include/linux/percpu.h \
-    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
-    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
-    $(wildcard include/config/have/setup/per/cpu/area.h) \
-  arch/arm/include/asm/percpu.h \
-  include/asm-generic/percpu.h \
-  include/linux/percpu-defs.h \
-    $(wildcard include/config/debug/force/weak/per/cpu.h) \
-    $(wildcard include/config/virtualization.h) \
-    $(wildcard include/config/amd/mem/encrypt.h) \
-  arch/arm/include/asm/topology.h \
-    $(wildcard include/config/arm/cpu/topology.h) \
-  include/linux/arch_topology.h \
-  include/asm-generic/topology.h \
-  include/linux/sysctl.h \
-    $(wildcard include/config/sysctl.h) \
-  include/linux/rbtree.h \
-  include/uapi/linux/sysctl.h \
-  include/linux/elf.h \
-  arch/arm/include/asm/elf.h \
-    $(wildcard include/config/vdso.h) \
-  arch/arm/include/asm/auxvec.h \
-  arch/arm/include/uapi/asm/auxvec.h \
-  arch/arm/include/asm/vdso_datapage.h \
-  arch/arm/include/asm/user.h \
-  include/uapi/linux/elf.h \
-  include/uapi/linux/elf-em.h \
-  include/linux/kobject.h \
-    $(wildcard include/config/uevent/helper.h) \
-    $(wildcard include/config/debug/kobject/release.h) \
-  include/linux/sysfs.h \
-  include/linux/kernfs.h \
-    $(wildcard include/config/kernfs.h) \
-  include/linux/idr.h \
-  include/linux/radix-tree.h \
-    $(wildcard include/config/radix/tree/multiorder.h) \
-  include/linux/kobject_ns.h \
-  include/linux/kref.h \
-  include/linux/refcount.h \
-    $(wildcard include/config/refcount/full.h) \
-  include/linux/moduleparam.h \
-    $(wildcard include/config/alpha.h) \
-    $(wildcard include/config/ia64.h) \
-    $(wildcard include/config/ppc64.h) \
-  include/linux/jump_label.h \
-  arch/arm/include/asm/jump_label.h \
-  include/linux/rbtree_latch.h \
-  include/linux/error-injection.h \
-  include/asm-generic/error-injection.h \
-  include/linux/tracepoint-defs.h \
-  include/linux/static_key.h \
-  arch/arm/include/asm/module.h \
-    $(wildcard include/config/arm/unwind.h) \
-    $(wildcard include/config/arm/module/plts.h) \
-  include/asm-generic/module.h \
-    $(wildcard include/config/have/mod/arch/specific.h) \
-    $(wildcard include/config/modules/use/elf/rel.h) \
-    $(wildcard include/config/modules/use/elf/rela.h) \
-  include/linux/fs.h \
-    $(wildcard include/config/fs/posix/acl.h) \
-    $(wildcard include/config/security.h) \
-    $(wildcard include/config/cgroup/writeback.h) \
-    $(wildcard include/config/ima.h) \
-    $(wildcard include/config/fsnotify.h) \
-    $(wildcard include/config/fs/encryption.h) \
-    $(wildcard include/config/epoll.h) \
-    $(wildcard include/config/file/locking.h) \
-    $(wildcard include/config/quota.h) \
-    $(wildcard include/config/fs/dax.h) \
-    $(wildcard include/config/block.h) \
-    $(wildcard include/config/mandatory/file/locking.h) \
-    $(wildcard include/config/migration.h) \
-  include/linux/wait_bit.h \
-  include/linux/kdev_t.h \
-  include/uapi/linux/kdev_t.h \
-  include/linux/dcache.h \
-  include/linux/rculist.h \
-  include/linux/rculist_bl.h \
-  include/linux/list_bl.h \
-  include/linux/bit_spinlock.h \
-  include/linux/lockref.h \
-    $(wildcard include/config/arch/use/cmpxchg/lockref.h) \
-  include/linux/stringhash.h \
-    $(wildcard include/config/dcache/word/access.h) \
-  include/linux/hash.h \
-    $(wildcard include/config/have/arch/hash.h) \
-  include/linux/path.h \
-  include/linux/list_lru.h \
-    $(wildcard include/config/memcg/kmem.h) \
-  include/linux/shrinker.h \
-  include/linux/xarray.h \
-  include/linux/pid.h \
-  include/linux/mm_types.h \
-    $(wildcard include/config/have/aligned/struct/page.h) \
-    $(wildcard include/config/userfaultfd.h) \
-    $(wildcard include/config/have/arch/compat/mmap/bases.h) \
-    $(wildcard include/config/membarrier.h) \
-    $(wildcard include/config/aio.h) \
-    $(wildcard include/config/mmu/notifier.h) \
-    $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \
-    $(wildcard include/config/hmm.h) \
-  include/linux/mm_types_task.h \
-    $(wildcard include/config/split/ptlock/cpus.h) \
-    $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \
-  include/linux/auxvec.h \
-  include/uapi/linux/auxvec.h \
-  include/linux/uprobes.h \
-    $(wildcard include/config/uprobes.h) \
-  arch/arm/include/asm/mmu.h \
-    $(wildcard include/config/cpu/has/asid.h) \
-  include/linux/capability.h \
-  include/uapi/linux/capability.h \
-  include/linux/semaphore.h \
-  include/linux/fcntl.h \
-  include/uapi/linux/fcntl.h \
-  arch/arm/include/uapi/asm/fcntl.h \
-  include/uapi/asm-generic/fcntl.h \
-  include/uapi/linux/fiemap.h \
-  include/linux/migrate_mode.h \
-  include/linux/percpu-rwsem.h \
-  include/linux/rcuwait.h \
-  include/linux/rcu_sync.h \
-  include/linux/delayed_call.h \
-  include/linux/uuid.h \
-  include/uapi/linux/uuid.h \
-  include/linux/errseq.h \
-  include/linux/ioprio.h \
-  include/linux/sched.h \
-    $(wildcard include/config/virt/cpu/accounting/native.h) \
-    $(wildcard include/config/sched/info.h) \
-    $(wildcard include/config/schedstats.h) \
-    $(wildcard include/config/fair/group/sched.h) \
-    $(wildcard include/config/rt/group/sched.h) \
-    $(wildcard include/config/cgroup/sched.h) \
-    $(wildcard include/config/blk/dev/io/trace.h) \
-    $(wildcard include/config/compat/brk.h) \
-    $(wildcard include/config/cgroups.h) \
-    $(wildcard include/config/blk/cgroup.h) \
-    $(wildcard include/config/stackprotector.h) \
-    $(wildcard include/config/arch/has/scaled/cputime.h) \
-    $(wildcard include/config/virt/cpu/accounting/gen.h) \
-    $(wildcard include/config/posix/timers.h) \
-    $(wildcard include/config/sysvipc.h) \
-    $(wildcard include/config/detect/hung/task.h) \
-    $(wildcard include/config/auditsyscall.h) \
-    $(wildcard include/config/rt/mutexes.h) \
-    $(wildcard include/config/ubsan.h) \
-    $(wildcard include/config/task/xacct.h) \
-    $(wildcard include/config/cpusets.h) \
-    $(wildcard include/config/intel/rdt.h) \
-    $(wildcard include/config/futex.h) \
-    $(wildcard include/config/compat.h) \
-    $(wildcard include/config/perf/events.h) \
-    $(wildcard include/config/rseq.h) \
-    $(wildcard include/config/task/delay/acct.h) \
-    $(wildcard include/config/fault/injection.h) \
-    $(wildcard include/config/latencytop.h) \
-    $(wildcard include/config/function/graph/tracer.h) \
-    $(wildcard include/config/kcov.h) \
-    $(wildcard include/config/bcache.h) \
-    $(wildcard include/config/vmap/stack.h) \
-    $(wildcard include/config/arch/task/struct/on/stack.h) \
-    $(wildcard include/config/debug/rseq.h) \
-  include/uapi/linux/sched.h \
-  include/linux/sem.h \
-  include/uapi/linux/sem.h \
-  include/linux/ipc.h \
-  include/linux/rhashtable-types.h \
-  include/uapi/linux/ipc.h \
-  arch/arm/include/generated/uapi/asm/ipcbuf.h \
-  include/uapi/asm-generic/ipcbuf.h \
-  arch/arm/include/generated/uapi/asm/sembuf.h \
-  include/uapi/asm-generic/sembuf.h \
-  include/linux/shm.h \
-  include/uapi/linux/shm.h \
-  include/uapi/asm-generic/hugetlb_encode.h \
-  arch/arm/include/generated/uapi/asm/shmbuf.h \
-  include/uapi/asm-generic/shmbuf.h \
-  arch/arm/include/asm/shmparam.h \
-  include/linux/kcov.h \
-  include/uapi/linux/kcov.h \
-  include/linux/plist.h \
-    $(wildcard include/config/debug/pi/list.h) \
-  include/linux/hrtimer.h \
-    $(wildcard include/config/high/res/timers.h) \
-    $(wildcard include/config/time/low/res.h) \
-    $(wildcard include/config/timerfd.h) \
-  include/linux/timerqueue.h \
-  include/linux/seccomp.h \
-    $(wildcard include/config/seccomp.h) \
-    $(wildcard include/config/have/arch/seccomp/filter.h) \
-    $(wildcard include/config/seccomp/filter.h) \
-    $(wildcard include/config/checkpoint/restore.h) \
-  include/uapi/linux/seccomp.h \
-  arch/arm/include/generated/asm/seccomp.h \
-  include/asm-generic/seccomp.h \
-  include/uapi/linux/unistd.h \
-  arch/arm/include/asm/unistd.h \
-    $(wildcard include/config/oabi/compat.h) \
-  arch/arm/include/uapi/asm/unistd.h \
-  arch/arm/include/generated/uapi/asm/unistd-eabi.h \
-  arch/arm/include/generated/uapi/asm/unistd-common.h \
-  arch/arm/include/generated/asm/unistd-nr.h \
-  include/linux/resource.h \
-  include/uapi/linux/resource.h \
-  arch/arm/include/generated/uapi/asm/resource.h \
-  include/asm-generic/resource.h \
-  include/uapi/asm-generic/resource.h \
-  include/linux/latencytop.h \
-  include/linux/sched/prio.h \
-  include/linux/signal_types.h \
-    $(wildcard include/config/old/sigaction.h) \
-  include/uapi/linux/signal.h \
-  arch/arm/include/asm/signal.h \
-  arch/arm/include/uapi/asm/signal.h \
-  include/uapi/asm-generic/signal-defs.h \
-  arch/arm/include/uapi/asm/sigcontext.h \
-  arch/arm/include/generated/uapi/asm/siginfo.h \
-  include/uapi/asm-generic/siginfo.h \
-  include/linux/task_io_accounting.h \
-    $(wildcard include/config/task/io/accounting.h) \
-  include/uapi/linux/rseq.h \
-  include/linux/sched/rt.h \
-  include/linux/iocontext.h \
-  include/uapi/linux/fs.h \
-  include/uapi/linux/limits.h \
-  include/uapi/linux/ioctl.h \
-  arch/arm/include/generated/uapi/asm/ioctl.h \
-  include/asm-generic/ioctl.h \
-  include/uapi/asm-generic/ioctl.h \
-  include/linux/quota.h \
-    $(wildcard include/config/quota/netlink/interface.h) \
-  include/linux/percpu_counter.h \
-  include/uapi/linux/dqblk_xfs.h \
-  include/linux/dqblk_v1.h \
-  include/linux/dqblk_v2.h \
-  include/linux/dqblk_qtree.h \
-  include/linux/projid.h \
-  include/uapi/linux/quota.h \
-  include/linux/nfs_fs_i.h \
-  include/linux/uaccess.h \
-  arch/arm/include/asm/uaccess.h \
-    $(wildcard include/config/cpu/sw/domain/pan.h) \
-    $(wildcard include/config/cpu/use/domains.h) \
-    $(wildcard include/config/uaccess/with/memcpy.h) \
-  arch/arm/include/asm/domain.h \
-    $(wildcard include/config/io/36.h) \
-    $(wildcard include/config/cpu/cp15/mmu.h) \
-  arch/arm/include/generated/asm/extable.h \
-  include/asm-generic/extable.h \
-  include/linux/slab.h \
-    $(wildcard include/config/debug/slab.h) \
-    $(wildcard include/config/failslab.h) \
-    $(wildcard include/config/have/hardened/usercopy/allocator.h) \
-    $(wildcard include/config/slab.h) \
-    $(wildcard include/config/slub.h) \
-    $(wildcard include/config/slob.h) \
-  include/linux/overflow.h \
-  include/linux/kasan.h \
-  include/linux/delay.h \
-  arch/arm/include/asm/delay.h \
-  arch/arm/include/asm/mach/map.h \
-    $(wildcard include/config/debug/ll.h) \
-  arch/arm/include/asm/io.h \
-    $(wildcard include/config/pci.h) \
-    $(wildcard include/config/need/mach/io/h.h) \
-    $(wildcard include/config/pcmcia/soc/common.h) \
-    $(wildcard include/config/isa.h) \
-    $(wildcard include/config/pccard.h) \
-  include/asm-generic/pci_iomap.h \
-    $(wildcard include/config/no/generic/pci/ioport/map.h) \
-    $(wildcard include/config/generic/pci/iomap.h) \
-  include/xen/xen.h \
-    $(wildcard include/config/xen.h) \
-    $(wildcard include/config/xen/pvh.h) \
-    $(wildcard include/config/xen/dom0.h) \
-  include/asm-generic/io.h \
-    $(wildcard include/config/generic/iomap.h) \
-    $(wildcard include/config/has/ioport/map.h) \
-    $(wildcard include/config/virt/to/bus.h) \
-  include/linux/logic_pio.h \
-    $(wildcard include/config/indirect/pio.h) \
-  include/linux/fwnode.h \
-  include/linux/vmalloc.h \
-
-/home/pi/Desktop/project/hum/hum_dev.o: $(deps_/home/pi/Desktop/project/hum/hum_dev.o)
-
-$(deps_/home/pi/Desktop/project/hum/hum_dev.o):
diff --git a/hum/.tmp_versions/hum_dev.mod b/hum/.tmp_versions/hum_dev.mod
deleted file mode 100644
index 75a71fd..0000000
--- a/hum/.tmp_versions/hum_dev.mod
+++ /dev/null
@@ -1,3 +0,0 @@
-/home/pi/Desktop/project/hum/hum_dev.ko
-/home/pi/Desktop/project/hum/hum_dev.o
-
diff --git a/hum/Makefile b/hum/Makefile
deleted file mode 100644
index b93d16b..0000000
--- a/hum/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-KERNEL_VER := $(shell uname -r)
-KERNEL_DIR = '/lib/modules/$(KERNEL_VER)/build'
-
-obj-m := hum_dev.o
-
-PWD := $(shell pwd)
-
-all :
-	make -C $(KERNEL_DIR) M=$(PWD) modules
-
-clean :
-	make -C $(KERNEL_DIR) M=$(PWD) clean
-
-in :
-	sudo insmod hydro_dev.ko
-	sudo mknod -m 666 /dev/hydro c 505 0
-
-out : 
-	sudo rmmod hydro_dev
-
-in2 :
-	sudo insmod hydro_dev.ko
diff --git a/hum/Module.symvers b/hum/Module.symvers
deleted file mode 100644
index e69de29..0000000
diff --git a/hum/hum_dev.c b/hum/hum_dev.c
deleted file mode 100644
index 147cea2..0000000
--- a/hum/hum_dev.c
+++ /dev/null
@@ -1,161 +0,0 @@
-#include <linux/init.h> 
-#include <linux/kernel.h> 
-#include <linux/module.h> 
-#include <linux/fs.h> 
-#include <linux/uaccess.h> 
-#include <linux/slab.h> 
-#include <linux/delay.h>
-
-#include <asm/mach/map.h> 
-#include <asm/uaccess.h> 
-
-typedef struct{
-   unsigned int hydro_integer;
-   unsigned int hydro_float;
-   unsigned int temp_integer;
-   unsigned int temp_float;
-}Data;
-
-#define HIGH                    1   
-#define LOW                     0
-
-#define HYDRO_MAJOR_NUMBER   505
-#define HYDRO_DEV_NAME         "hydro_dev" 
-
-#define IOCTL_HYDRO_MAGIC_NUMBER    'h'
-#define IOCTL_CMD_HYDRO      _IOR(IOCTL_HYDRO_MAGIC_NUMBER, 0, Data)
-
-#define GPIO_BASE_ADDRESS       0x3F200000
-
-#define GPFSEL0                  0x00
-#define GPFSEL1			0x04
-#define GPSET1                  0x1C
-#define GPCLR1                  0x28
-#define GPLEV1                  0x34
-
-static void __iomem* gpio_base;
-
-volatile unsigned int* gpsel0;
-volatile unsigned int* gpsel1;
-volatile unsigned int* gpset1;
-volatile unsigned int* gpclr1;
-volatile unsigned int* gplev1;
-
-int hydro_open(struct inode * inode, struct file * filp){
-    printk(KERN_ALERT "\nhumidity driver open\n"); 
-    gpio_base = ioremap(GPIO_BASE_ADDRESS, 0xFF);
-    
-    gpsel0 = (volatile unsigned int*)(gpio_base + GPFSEL0);
-    gpsel1 = (volatile unsigned int*)(gpio_base + GPFSEL1);
-    gpset1 = (volatile unsigned int*)(gpio_base + GPSET1);
-    gpclr1 = (volatile unsigned int*)(gpio_base + GPCLR1);
-    gplev1 = (volatile unsigned int*)(gpio_base + GPLEV1);
-/*
-    *gpsel0 |= (1<<26);
-    *gpsel0 |= (1<<29);
-    *gpsel1 |= (1<<2);
-    *gpsel1 |= (1<<5);*/
-
-    return 0; 
-}
-
-int hydro_release(struct inode * inode, struct file * filp) { 
-    printk(KERN_ALERT "humidity driver closed\n\n"); 
-    iounmap((void *)gpio_base); 
-    return 0; 
-}
-
-
-long hydro_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-{ 
-    Data data;
-    int result[5] = {0};
-    int index = 0;
-   int pre_data = HIGH;
-   int counter = 0;
-    int i = 0;
-    switch (cmd){ 
-        case IOCTL_CMD_HYDRO: 
-
-            *gpsel0 |= (1 << 12);       //GPIO 4 SET OUTPUT MODE
-
-            *gpset1 |= (1 << 4);        //GPIO 4 SET HIGH
-            mdelay(800);             //SLEEP FOR 800 miliseconds to synchronize bits from loop
-
-            *gpclr1 |= (1 << 4);        //GPIO 4 SET LOW
-            mdelay(18);              //SLEEP FOR 18 miliseconds
-
-            *gpset1 |= (1 << 4);        //GPIO 4 SET HIGH
-            udelay(30);             //SLEEP FOR 30 microseconds
-
-           *gpsel0 &=  ~(1 << 12);        //GPIO 4 SET INPUT MODE
-
-            //except first 3(wait, response, ready) signals
-            for(i = 0; i < 3; i++){
-                if(((*gplev1 >> 4) & 0x01) == LOW){
-                    while(((*gplev1 >> 4) & 0x01) == LOW){} continue;
-                }
-                if(((*gplev1 >> 4) & 0x01) == HIGH){
-                    while(((*gplev1 >> 4) & 0x01) == HIGH){} continue;
-                }
-            }
-            //interpret '0' and '1' bits
-           while(index < 40){
-                if(((*gplev1 >> 4) & 0x01) == LOW) continue;
-              counter = 0;
-              while(((*gplev1 >> 4) & 0x01) == HIGH){
-                 counter++;
-                    udelay(1);
-              }
-              if(counter > 80) break;
-             result[index / 8] <<= 1;
-             if(counter > 28) result[index / 8] |= 1;
-                index++;
-           }
-            //printk(KERN_INFO "data[0]: %x data[1]: %x data[2]: %x data[3]: %x data[4]: %x\n", data[0], data[1], data[2], data[3], data[4]); 
-            if(result[4] != ((result[0] + result[1] + result[2] + result[3]) & 0xFF))
-                break;
-            data.hydro_integer = result[0];
-            data.hydro_float = result[1];
-            data.temp_integer = result[2];
-            data.temp_float = result[3];
-            //printk(KERN_INFO "humidity: %d.%d%% temperature: %d.%d%%\n", info.humidity_integer, info.humidity_float, info.temperature_integer, info.temperature_float);
-
-            copy_to_user((void*)arg, (void*)&data, sizeof(data));
-	   printk(KERN_ALERT "hydro done\n"); 
-          break; 
-
-        default : 
-            printk(KERN_ALERT "ioctl : command error\n");
-    }
-    
-    return 0; 
-}
-
-static struct file_operations hydro_fops = { 
-    .owner = THIS_MODULE,  
-    .open = hydro_open, 
-    .release = hydro_release,
-    .unlocked_ioctl = hydro_ioctl
-}; 
-
-int __init hydro_init (void) { 
-    if(register_chrdev(HYDRO_MAJOR_NUMBER, HYDRO_DEV_NAME, &hydro_fops) < 0)
-        printk(KERN_ALERT "hydro driver initalization failed\n"); 
-    else 
-        printk(KERN_ALERT "hydro driver initalization succeed\n");
-    return 0; 
-}
-
-void __exit hydro_exit(void){ 
-    unregister_chrdev(HYDRO_MAJOR_NUMBER, HYDRO_DEV_NAME); 
-    printk(KERN_ALERT "hydro driver exit"); 
-}
-
-module_init(hydro_init); 
-module_exit(hydro_exit);  
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("joreka"); 
-MODULE_DESCRIPTION("hydro_dev");
-
diff --git a/hum/hum_dev.ko b/hum/hum_dev.ko
deleted file mode 100644
index 53a728e839171e3f91b8fc5d3620f0317d5263e1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7948
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
YkT__R23g%3F$RXMFiA*W1Sw+x02=Gct^fc4

diff --git a/hum/hum_dev.mod.c b/hum/hum_dev.mod.c
deleted file mode 100644
index 581819d..0000000
--- a/hum/hum_dev.mod.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <linux/build-salt.h>
-#include <linux/module.h>
-#include <linux/vermagic.h>
-#include <linux/compiler.h>
-
-BUILD_SALT;
-
-MODULE_INFO(vermagic, VERMAGIC_STRING);
-MODULE_INFO(name, KBUILD_MODNAME);
-
-__visible struct module __this_module
-__attribute__((section(".gnu.linkonce.this_module"))) = {
-	.name = KBUILD_MODNAME,
-	.init = init_module,
-#ifdef CONFIG_MODULE_UNLOAD
-	.exit = cleanup_module,
-#endif
-	.arch = MODULE_ARCH_INIT,
-};
-
-#ifdef CONFIG_RETPOLINE
-MODULE_INFO(retpoline, "Y");
-#endif
-
-static const struct modversion_info ____versions[]
-__used
-__attribute__((section("__versions"))) = {
-	{ 0xad1a7def, "module_layout" },
-	{ 0x6bc3fbc0, "__unregister_chrdev" },
-	{ 0xcfc78319, "__register_chrdev" },
-	{ 0xdb7305a1, "__stack_chk_fail" },
-	{ 0xf4fa543b, "arm_copy_to_user" },
-	{ 0x8e865d3c, "arm_delay_ops" },
-	{ 0x8f678b07, "__stack_chk_guard" },
-	{ 0xedc03953, "iounmap" },
-	{ 0x2e5810c6, "__aeabi_unwind_cpp_pr1" },
-	{ 0xe97c4103, "ioremap" },
-	{ 0x7c32d0f0, "printk" },
-	{ 0xb1ad28e0, "__gnu_mcount_nc" },
-};
-
-static const char __module_depends[]
-__used
-__attribute__((section(".modinfo"))) =
-"depends=";
-
-
-MODULE_INFO(srcversion, "848B380E4218A5ABA3C9C06");
diff --git a/hum/hum_dev.mod.o b/hum/hum_dev.mod.o
deleted file mode 100644
index 21c79f9107040c7496e92255f2616d11948d53b0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2968
zcmb<-^>JflWMqH=Mg|QA1doBiffFplY67M-82B0Zz$|P;Mrm$*N@^K4sZp`f5WpG&
z#YM?wsYS(^`FXY$CKgV{76z^+MurxSrjAaI#?F?`24)NlDX9gic`3!V40(yUskX3G
zR+d_no0y)NY-^%tXsKsuu3KiVtq|-RppcuN5?`8^lb@IZVnR(XR&WgREi+drFe<Z9
zU|?WiV_<-!b4CURpUk|{3aIPe*GjF;%}*)KNsZ4*tjsShfr=AL9r%4XJ3hWNuP8M=
zv$!O+C_Xu(h?G1b*?jzbd_1|j85kC_7T=DKFD^+;&W=yc$c|4-%*-Ly?I3m5A-}#P
z7Ujk#=NDAQm*mHn7N-`0#EHc=v2A@I{VAzAiIwsB1;xZ_gsNljPVYx{e|l+RQ3_O!
z7%JHEz}w9H(!AWn0%DY7s5vGOp%)*Yn3|ZB8DE-Lo|%^tpIlH7Ur=O-p%kkCvt!N6
z%>1HMa_#?c!KkL7C^N4l8>{gI1s`av-54LAo>v;5o19;oR}!C>Oi&Ms0(WO;D+P_9
z#NvXa%)~qe3q4~!16?!iqJm6AO$d*{(SU)00USgOjA{%F46Nq5jtp#E?2a6aoJ?Fy
zLQEozqKx9q5{#0JQcQA8O33vI%r0ax7KV@iVd5Z~8Im(WOfY6<U;@)Hf|-FC#st&M
z3@i-%U>1yEfib`|GXoo%JR5@$ScZW?8C(vqF=#U|FsLvvFo3E%Mg}$p8wLgjT?PgQ
zUZ}i30|SE<0|QtbBoEaNrkEMn(adLONCV3-Fi3#)vqO0hikX1}O+5!g9z==(<TXYH
z4j2ziGc$03X&Au_b|s7l(!$M94dps8F)#=+urPE&`5;Pwfq`KvhyleQJ_EEE)yvIK
z(Mx7fNnwbO5B2j540Vn7bcsil%7#V^@$t|C5n2wTs00<shK49Yu!7mpfFV9Fza%x@
zj3GWgJ|0#OGsMT2WMmdY4Q0s8%PfJhlXFrN^GXX~+#3uG3{2t-3@l6x3{0Sa)GMyc
zElEsb&?_z}g3uW-R!M3_34>lrVo4%{UQ%%}gI-Z;j$V3Rsa{TIUUq(7a;hG(r66Bt
z=B4E`=z$!l2dMy%oT!(apPQSSR|1uH_Y2hp7pV+-jzPY9i6tdPnMtK3sU#F`(%^Ie
zsdqrp0BKKwSP%@$4~kHAuoR9<ojL;pIF%4m2g<4-vtjBS7#J8pX#`>`0|ST;V(UQD
zK8!zygMk5*PIwp?7(lrRgh8p&3+g^tj%;9JU_fs1fz*M_3ua(o0Hu1Ex*trCya18|
zVVJsjH1h;N4h3P5BB<RUW)@T($Uh*y02?H~g4iGo@*@a?q69>P#6Z{tRMCSNPz;l6
zW&q_I26!a_Qioi`!_<Ljm>)n!WUw(XOkjkR3t~|Bfx?LsVjf5d82?~rU|0fXK?smJ
UAeJDSx-}dO43j|;Pz+NC0DMducmMzZ

diff --git a/hum/hum_dev.o b/hum/hum_dev.o
deleted file mode 100644
index efbc29efa2a0179089ca17cd6ca52333c6592f29..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7176
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

diff --git a/hum/modules.order b/hum/modules.order
deleted file mode 100644
index 19d9790..0000000
--- a/hum/modules.order
+++ /dev/null
@@ -1 +0,0 @@
-kernel//home/pi/Desktop/project/hum/hum_dev.ko
diff --git a/hydro/hydro_dev.c b/hydro/hydro_dev.c
index 5c5efa5..c220994 100644
--- a/hydro/hydro_dev.c
+++ b/hydro/hydro_dev.c
@@ -1,157 +1,153 @@
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/slab.h>
+#include <linux/init.h> 
+#include <linux/kernel.h> 
+#include <linux/module.h> 
+#include <linux/fs.h> 
+#include <linux/uaccess.h> 
+#include <linux/slab.h> 
 #include <linux/delay.h>
 
-#include <asm/mach/map.h>
-#include <asm/io.h>
-#include <asm/uaccess.h>
+#include <asm/mach/map.h> 
+#include <asm/uaccess.h> 
 
-typedef struct {
-   unsigned int tempi;
-   unsigned int tempf;
-   unsigned int hydroi;
-   unsigned int hydrof;
+typedef struct{
+   unsigned int hydro_integer;
+   unsigned int hydro_float;
+   unsigned int temp_integer;
+   unsigned int temp_float;
 }Data;
 
-#define HYDRO_MAJOR_NUMBER 505
-#define HYDRO_DEV_NAME "hydro_dev"
-
-#define GPIO_BASE_ADDR 0x3F200000
-#define GPFSEL0 0x00
-#define GPFSEL1 0x04
-#define GPSET0    0x1C
-#define GPCLR0    0x28
-#define GPLEV0   0x34
-
-#define HIGH    1
-#define LOW   0
-
-static void __iomem *gpio_base;
-volatile unsigned int *gpsel0;
-volatile unsigned int *gpsel1;
-volatile unsigned int *gpset1;
-volatile unsigned int *gpclr1;
-volatile unsigned int *gplev1;
-
-int hydro_open(struct inode *inode,struct file *flip){
-   printk(KERN_ALERT "HYDRO driver open!!\n");
-   
-   gpio_base = ioremap(GPIO_BASE_ADDR, 0x60);
-   gpsel0 = (volatile unsigned int *)(gpio_base + GPFSEL0);
-   gpsel1 = (volatile unsigned int *)(gpio_base + GPFSEL1);
-   gpset1 = (volatile unsigned int *)(gpio_base + GPSET0);
-   gpclr1 = (volatile unsigned int *)(gpio_base + GPCLR0);
-   gplev1 = (volatile unsigned int *)(gpio_base + GPLEV0);
-
-   *gpsel0 |= (1<<26);
-   *gpsel0 |= (1<<29);
-   *gpsel1 |= (1<<2);
-   *gpsel1 |= (1<<5);
-   
-   return 0;
+#define HIGH                    1   
+#define LOW                     0
+
+#define HYDRO_MAJOR_NUMBER   505
+#define HYDRO_DEV_NAME         "hydro_dev" 
+
+#define IOCTL_HYDRO_MAGIC_NUMBER    'h'
+#define IOCTL_CMD_HYDRO      _IOR(IOCTL_HYDRO_MAGIC_NUMBER, 0, Data)
+
+#define GPIO_BASE_ADDRESS       0x3F200000
+
+#define GPFSEL0                  0x00
+#define GPFSEL1			0x04
+#define GPSET1                  0x1C
+#define GPCLR1                  0x28
+#define GPLEV1                  0x34
+
+static void __iomem* gpio_base;
+
+volatile unsigned int* gpsel0;
+volatile unsigned int* gpsel1;
+volatile unsigned int* gpset1;
+volatile unsigned int* gpclr1;
+volatile unsigned int* gplev1;
+
+int hydro_open(struct inode * inode, struct file * filp){
+    printk(KERN_ALERT "humidity driver open\n"); 
+    gpio_base = ioremap(GPIO_BASE_ADDRESS, 0xFF);
+    
+    gpsel0 = (volatile unsigned int*)(gpio_base + GPFSEL0);
+    gpsel1 = (volatile unsigned int*)(gpio_base + GPFSEL1);
+    gpset1 = (volatile unsigned int*)(gpio_base + GPSET1);
+    gpclr1 = (volatile unsigned int*)(gpio_base + GPCLR1);
+    gplev1 = (volatile unsigned int*)(gpio_base + GPLEV1);
+
+    return 0; 
 }
 
-int hydro_release(struct inode *inode,struct file *flip){
-   printk(KERN_ALERT "HYDRO driver closed!!\n");
-   
-   iounmap((void *)gpio_base);
-   
-   return 0;
+int hydro_release(struct inode * inode, struct file * filp) { 
+    printk(KERN_ALERT "humidity driver closed\n\n"); 
+    iounmap((void *)gpio_base); 
+    return 0; 
 }
 
-ssize_t hydro_read(struct file *filp, char* buf, size_t counts, loff_t *f_pos) {
-   printk(KERN_ALERT "read function called!!\n");
-   Data data;
-   int result[5] = {0, };
-   int time = 0;
-   int prev = HIGH;
-   int index = 0;
-   int i = 0;
-
-   *gpsel0 |= (1<<12);
-
-   *gpset1 |= (1<<4);
-   mdelay(800);
-   *gpclr1 |= (1<<4);
-   mdelay(18);
-   *gpset1 |= (1<<4);
-   udelay(30);
-
-   *gpsel0 = (0<<24);
-
-   for(i = 0; i < 3; i++) {
-      if(((*gplev1 >> 4) & HIGH) == LOW) {
-         while(((*gplev1 >> 4) & HIGH) == LOW){}
-         continue;
-      }
-      if(((*gplev1 >> 4) & HIGH) == HIGH) {
-         while(((*gplev1 >> 4) & HIGH) ==HIGH){}
-         continue;
-      }
-   }
-   //int status = LOW;
-   while(index < 40) {
-      if(((*gplev1 >> 4) & 0x01) == LOW)
-         continue;
-      time = 0;
-      while(((*gplev1 >> 4) & 0x01) == HIGH){
-         time++;
-         udelay(1);
-      }
-      if(time > 70)
-         break;
-      result[index / 8] <<= 1;
-      if(time > 28)
-         result[index/8] |= 1;
-      time++;
-   }
-   int wrong = -1;
-   printk(KERN_ALERT "%d %d %d %d\n", result[0], result[1], result[2], result[3]);
-
-   if((result[4] == (result[0] + result[1] + result[2] + result[3])& 0xFF) && result[0] != 0) {
-      data.hydroi = result[0];
-      data.hydrof = result[1];
-      data.tempi = result[2];
-      data.tempf = result[3];
-      copy_to_user(buf, (const void*)&data, sizeof(data));
-   }
-   else
-      copy_to_user(buf, &wrong, sizeof(int));
-
-   return counts;
+
+long hydro_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+{ 
+    Data data;
+    int result[5] = {0};
+    int index = 0;
+    int counter = 0;
+    int i = 0;
+    switch (cmd){ 
+        case IOCTL_CMD_HYDRO: 
+
+            *gpsel0 |= (1 << 12);    
+
+            *gpset1 |= (1 << 4); 
+            mdelay(800);         
+
+            *gpclr1 |= (1 << 4); 
+            mdelay(18);           
+
+            *gpset1 |= (1 << 4);   
+            udelay(30);             
+
+           *gpsel0 &=  ~(1 << 12);       
+
+            for(i = 0; i < 3; i++){
+                if(((*gplev1 >> 4) & 0x01) == LOW){
+                    while(((*gplev1 >> 4) & 0x01) == LOW){} continue;
+                }
+                if(((*gplev1 >> 4) & 0x01) == HIGH){
+                    while(((*gplev1 >> 4) & 0x01) == HIGH){} continue;
+                }
+            }
+           
+           while(index < 40){
+                if(((*gplev1 >> 4) & 0x01) == LOW) 
+			continue;
+              	counter = 0;
+              	while(((*gplev1 >> 4) & 0x01) == HIGH){
+                 	counter++;
+                 	udelay(1);
+                }
+                if(counter > 80) 
+		  	break;
+                result[index / 8] <<= 1;
+                if(counter > 28) result[index / 8] |= 1;
+                 	index++;
+           }
+
+            if(result[4] != ((result[0] + result[1] + result[2] + result[3]) & 0xFF))
+                break;
+            data.hydro_integer = result[0];	data.hydro_float = result[1];
+            data.temp_integer = result[2];	data.temp_float = result[3];
+
+            copy_to_user((void*)arg, (void*)&data, sizeof(data));
+	    printk(KERN_ALERT "hydro done\n"); 
+            break; 
+
+        default : 
+            printk(KERN_ALERT "cannot hydro device driver\n");
+    }
+    
+    return 0; 
 }
-         
-static struct file_operations hydro_fops={
-   .owner = THIS_MODULE,
-   .open = hydro_open,
-   .release = hydro_release,
-   .read = hydro_read
-};
-
-int __init hydro_init(void){
-   if(register_chrdev(HYDRO_MAJOR_NUMBER, HYDRO_DEV_NAME, &hydro_fops)<0)
-      printk(KERN_ALERT "HYDRO driver initialization fail\n");
-   else
-      printk(KERN_ALERT "HYDRO driver intialization success\n");
-   
-   return 0;
+
+static struct file_operations hydro_fops = { 
+    .owner = THIS_MODULE,  
+    .open = hydro_open, 
+    .release = hydro_release,
+    .unlocked_ioctl = hydro_ioctl
+}; 
+
+int __init hydro_init (void) { 
+    if(register_chrdev(HYDRO_MAJOR_NUMBER, HYDRO_DEV_NAME, &hydro_fops) < 0)
+        printk(KERN_ALERT "hydro driver initalization failed\n"); 
+    else 
+        printk(KERN_ALERT "hydro driver initalization succeed\n");
+    return 0; 
 }
 
-void __exit hydro_exit(void){
-   unregister_chrdev(HYDRO_MAJOR_NUMBER, HYDRO_DEV_NAME);
-   printk(KERN_ALERT "HYDRO driver exit doen\n");
+void __exit hydro_exit(void){ 
+    unregister_chrdev(HYDRO_MAJOR_NUMBER, HYDRO_DEV_NAME); 
+    printk(KERN_ALERT "hydro driver exit"); 
 }
 
-module_init(hydro_init);
-module_exit(hydro_exit);
+module_init(hydro_init); 
+module_exit(hydro_exit);  
 
 MODULE_LICENSE("GPL");
-MODULE_AUTHOR("joreka");
-MODULE_DESCRIPTION("HYDRO_DEV");
-   
-   
+MODULE_AUTHOR("joreka"); 
+MODULE_DESCRIPTION("hydro_dev");
 
diff --git a/hydro/hydro_dev.ko b/hydro/hydro_dev.ko
index cca3ff2ae1855dab5b7a8a6ed3e2f49c767c2f09..8fc823cde0c10a626bf12758b72615749df71a69 100644
GIT binary patch
literal 7952
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

literal 7604
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

diff --git a/hydro/hydro_dev.mod.c b/hydro/hydro_dev.mod.c
index c7f7bc2..4cbf211 100644
--- a/hydro/hydro_dev.mod.c
+++ b/hydro/hydro_dev.mod.c
@@ -45,4 +45,4 @@ __attribute__((section(".modinfo"))) =
 "depends=";
 
 
-MODULE_INFO(srcversion, "CBED33CF7ABA6C5B93EA66B");
+MODULE_INFO(srcversion, "5D363F4F7E70F2B2C459F60");
diff --git a/hydro/hydro_dev.mod.o b/hydro/hydro_dev.mod.o
index badda59daf496f7c86c898dd438922bfd4fdc762..e13cf67a11a9fcd46be53422bd74bb15059b3e31 100644
GIT binary patch
delta 36
rcmbOuK1X~*H<P%ji?Nxpn~9sbtGR)jk&}_LiK(TVnZf2oOusk)yL$>r

delta 36
rcmbOuK1X~*H<P%tldFrdv9p`Gqm!eVv#FD%v8$t*nbYP)Ousk)!I=u2

diff --git a/hydro/hydro_dev.o b/hydro/hydro_dev.o
index ba0f0df5df97f16b366480a3334950c7c25b3197..aad6c69e1a2ad655e8333bb7df506cb3ca746997 100644
GIT binary patch
literal 7180
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

literal 6592
zcmb<-^>JflWMqH=Mg|QA1doB?fe2WJ)dWmwFvu}TgINPf@E%z3kl}{zOO_2jk60e)
zKK=Lq|7!*YhQ|yH4v#_X1c3#Q85kBkR^WFA^BD{n9y1s?JZ4Z>@Q_8I;Sq~M^HYrj
zO^-MPnxD!rG&~YG(EQXypy?40L-SLRJ`sWDrwjs<o-!yjKV=kde9R!w^pr(l@>2$d
ziBFl7njSMKG(P2k@>vw1e1*wR84M;pRWN9N%wW*;lwrl(7lhmicNfECs2>(QhUxoo
zAL2im3%&?H1~5Ek2yl1|^DBeF)TfLI3m!5REO^K;f#Gq&YM#do6C55J7;r<(gZlf-
z8i&V<&J2%1eqe4`@DSt=MlFcDd7$nVfV!K}A><J=0|OU}!OW*z3=19_|JQ%`^Z)->
z0tz#pCV2BaKI7x?Sa`vL#~{DL^(=^j>tR9C!=o_c=?Pwz$4LwhkC`1%^?=L=nayG_
z<0->}=BFYcT4C~20S2MR%nS@t3{du;|Nps|7#Ln5@ufg+{QUpF)EzaJ$IJ>2kHLBc
zKzaoqgVZxDSO5_-nEX`0K==_G0|OTm!-9t(J1rErpE54!dIYlDLP7fJm;e7?xiLh6
z>^vpI5cRmlVZlR2hnB-H|Nno*tgzrAgF)|87J&s1;bDH@!DEvHknrU-Sn#mk_V8nS
zgTs$G3?@HiQJD6KS>ciagTVr028LjenNn;ZdleQuHWBcC1WKC*3er#689?Sveag%b
z1TvQkB(8D6`_YH>b6+^kW^CNBp`i_wzmVCUVDbN8agZDcuV7$c;9+23c)-BGAi==E
zfSleqkkbt)KPZ6m0K;Pj1qWze=zaQ=k>N3;&H_jtVF&=FtIZ4y42u~U95ypBI4lOa
z3zQ#tE_gozrAuV@fb0ihWII7-F$gSp3^Es%wjpL9@+K~GQc{bPi!uvJGV}9nJtAF#
z{Nr6*!x$1vOEU6{Y_sx<QnM2oax#-s^NLe#-2;3W7!ARy6jF*Z%TkLJ@(WV)6cxD`
z(8ZH;@{3bbz%n4YqSV9`g|yPVWRN`y$%#2RFiA#3)f5F7;$mRPs7xu!k55T0V*u$x
zu`4q#vm`SyC$lOMY)V>UW)2s+y_tE)N{UO9lT(X}xiHO2t;j4<NXbvl<6>ZNcXqZ?
z&<IK_E=bBu%u}$?GuAWEHPbFC$TZZ1@E9ER7#J85QxlUi85mU<7#LX1bsZVlxY!*z
z7&)1Qm_!&w8O50;7$q5{nB<t0kjrsUT!ApM7z@M4{~$3KW=1Lb85o!um|#+1nwfzG
zOv4Cf237`M7za$VG6;Za7$M3a3S)w4bp7lM@?dco!46}9X=VlvG<gmNC1_d)D_{_1
zP-kFZfYePO5m5#m1_p)z5EG11ZD(fSLUS({gCSTQj9_B0W?*1QfN>c_85|fG7;=#K
zt_%ze6Oj0DCIcwEc+lJn%AE)m%nZC}@~EN5%)pQ4K7Ix-1_p*5a3j$DBZy|6AY3Jg
z!OS3pCXdc%V(<qkWME)u0HsX^CN%Xd3{g;dP|Pu6#J>nb3RGSUtY3toj)8#z#O8zY
zCo?cGfKn<bBp4YWjR~k024)6PH2cu~Ck|5zrkTMegPCB0nL&bKC78v)04fWG7+4v$
zK=~jFlopSG7*Gu2pN6tQ6o`Kr#DHQD{}ltoEDHt(29S9_pmHDzBoE3Wpz`()BSfAX
zDMNweWzqQBXnY$qzAuyyN^?RCTnrIVKFq!>C?6(Y2IYg&ybuFFLnD+AQ$H2ThsiHt
zWB`XcDE<T)SQu6_GJx|ajK7HyQis6!I~f@mI2ahfF%43GfDyum$sdQB53>(ZQ0gT!
zs3bDz`8XRe==nJMIeYjA88E1%fJ6*Igb|1^hRcD)Oh96$Ai@kpm_toV%P%NqNH56D
zk55W0PGyLX5B2j540Vn7bcsi*Ck%~HWFU2gp&^POw8}6vfSL@dCm7=6)ALH>bCdH+
z^Gf3Lk{Jq$GV@BZ88Y*WQgagv7~<o>C2V|YUU_C-N_=ubL3}}xA=H4P)SOh1n=<oD
z^FWFr^#rJ1VTg|}E=f$zj!(|Wj!!R5EJ|TWEXs{fNzF;Dj0brL#7oXEsEjYkk1s7w
zEke-%szsnyfa({9`1qpK^vvRt)S~$0j3Q7y1QL$V%}*)KNrfr|RUQoS@uhj_N|SR^
z6Z1+7V5-v#a#G6-8PW@qbBaJzacT*K%7Ib_4Ds<L8JWc}4WP(nU|?W!g`@>0Q%D)h
zq{qNu0}?leq#+r7NZQh7hqOO**cljP7#J923>d)Wu#6!Cg8>5rgEj|5zYYhaECcD=
z0}|(DU^u|Qz@Wp+zyQjpAblr5;v5VNXF%c{3=CI5=9w@sd;!t=3=E+BsBOl;@CPJs
z1}<b6wD}kqSQr@?bodw;L>L(uw9Oe9WI%j#1_l*Ih<h|Z;v5VNIv{Zl28I$Q1_o_@
z28IeI1_m8|28I?Uh`Jph+Jb@M0*JPR1cVkVgk~^;<OMBGNVtH+LFF2V56b%>KB$BP
z@j*1mpP=y27Ghvf0QpN8QWok6F)(O=+%L?)04ir>tQo-djJ5~^g9}KVC<B8BNM3}2
z!3RW(Lh3Y7_<&rZ1+ompfVoEu68_r4knq<LhS(=#2eD6E25O%SG+scF!oa|wB?U5s
zfdTF>Sq26Mz2eH;lEfqiz2cH02%Q0A6{Y6rr6iUlGUz207c=OAxFx9-C3>ZKIhon1
zIh720jzPY9sTC!ONqT4!Ahi(5%#;djlAzQL7DqM&Nf6ZlGzm~fz|f2&h^iS$A~!!J
zGcPTlL9Zwu<S~$+4fRYI^pf*)b5rw581(Y;OH%dR{X%uYSsUWE#FCPt%%swi)M9Ax
z5kpOcBvl4BsA5q03}u2TSg{If4}sXsU{OfE0oBb=F1TC<u|d6XP6kN20r4exAaO1U
z%Ae5k8&r;~GC<NQ%sf#22<j_<^nfs^TnEwaXzl~4yMxsHgQ?SEU|>MD*Mf(E;ROQ&
z1IS)bHUX&v*=q|m4`##!W=L8D*#*KNbs!qlzF=fvC};w47#J9~FhkNZ$SjZ$OkEh7
zy$ZaLyaTcqWFJT!i0*;f3k&Bn%*gFINd5(x3yM2re?;&yFhoH80cxki%mcX#6dy2u
z=&(TQOOP2L3{nT8XG83T`@@0-67C?gK=Lqk)6x8~ffwRmkUv1JL6AC-KTbl-gQph<
z7D!qEnFYcibs%~Jnt3O9A!RPeJbt8fupeq3%pWB<{BZ-K4(^Wzs6Rkvf$W3X3o4h9
z!|w-@KZKC%eG4%U-jnEHfw&K376^mF7DRu8sxty{Ky6+Y28K&eHi!b*3sTF<$iM)i
zp+y)&7b|MI0?C0eA5<MkF9@%LB`6RFY8Qwp#|Ub-GZcW>APiEc4`M(u$Se>OM8m=k
z#DBobz>vTK8mM4k0Cmbh?gJIepfG{uHIO<7E(V6HAk82SlD(joI<mS2!VC=dSk#S{
z$E1|UpgJiY*0RgVPlg6M5!7h;jGB)?=@}Gkqvi8x`3y=2qvbR9^4SPl&%o-236hY$
z5h%<+7?h7dSdS6XZUTvc@B&Fhdkxe_0I31h`=B}mG~NU1?|}LcAhk@akai1*2B`tj
LpneCF00RR6>39-k

diff --git a/smoke/.smoke_dev.o.cmd b/smoke/.smoke_dev.o.cmd
index 78434e5..3a02742 100644
--- a/smoke/.smoke_dev.o.cmd
+++ b/smoke/.smoke_dev.o.cmd
@@ -689,6 +689,8 @@ deps_/home/pi/Desktop/project/smoke/smoke_dev.o := \
     $(wildcard include/config/slob.h) \
   include/linux/overflow.h \
   include/linux/kasan.h \
+  include/linux/delay.h \
+  arch/arm/include/asm/delay.h \
   arch/arm/include/asm/mach/map.h \
     $(wildcard include/config/debug/ll.h) \
   arch/arm/include/asm/io.h \
diff --git a/smoke/Makefile b/smoke/Makefile
index 3a223ae..3f3b1b6 100644
--- a/smoke/Makefile
+++ b/smoke/Makefile
@@ -1,4 +1,5 @@
-KERNEL_DIR = /lib/modules/4.19.97-v7+/build
+KERNEL_VER := $(shell uname -r)
+KERNEL_DIR = '/lib/modules/$(KERNEL_VER)/build'
 
 obj-m := smoke_dev.o
 
diff --git a/smoke/app b/smoke/app
new file mode 100755
index 0000000000000000000000000000000000000000..42672f08bb621d704d8a5d40b5132183348df7e1
GIT binary patch
literal 8088
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
CeRkjg

literal 0
HcmV?d00001

diff --git a/smoke/app.c b/smoke/app.c
new file mode 100644
index 0000000..c5013ff
--- /dev/null
+++ b/smoke/app.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+int main() {
+	int fd = open("/dev/smoke_dev", O_RDWR);
+
+	int data = 0;
+
+	while(1) {
+		read(fd, &data, sizeof(data));
+		printf("%d\n", data);
+		sleep(1);
+	}
+
+	close(fd);
+
+	return 0;
+
+}
+
+
diff --git a/smoke/smoke_dev.c b/smoke/smoke_dev.c
index f6acff0..f4d08cd 100644
--- a/smoke/smoke_dev.c
+++ b/smoke/smoke_dev.c
@@ -9,8 +9,8 @@
 #include <asm/mach/map.h>
 #include <asm/uaccess.h>
 
-#define SOUND_MAJOR_NUMBER      500
-#define SOUND_DEV_NAME         "/dev/smoke_dev"
+#define SMOKE_MAJOR_NUMBER      500
+#define SMOKE_DEV_NAME         "/dev/smoke_dev"
 
 #define GPIO_BASE_ADDR      0x3F200000
 #define SPI_BASE_ADDR      0x3F204000
@@ -26,8 +26,8 @@ static void __iomem *spi_base;
 volatile unsigned int *gpfsel0, *gpfsel1;
 volatile unsigned int *spi_cs, *spi_fifo;
 
-int sound_open(struct inode *inode, struct file *filp){
-   printk(KERN_ALERT "sound detection sensor driver open!!\n");
+int smoke_open(struct inode *inode, struct file *filp){
+   printk(KERN_ALERT "smoke detection sensor driver open!!\n");
    
    gpio_base = ioremap(GPIO_BASE_ADDR, 0xFF);
    spi_base = ioremap(SPI_BASE_ADDR, 0xFF);
@@ -39,62 +39,62 @@ int sound_open(struct inode *inode, struct file *filp){
  
    *gpfsel0 &= ~(0x1FF << 21);
    *gpfsel0 |= (0x24 << 24);
-   *gpfsel1 &= ~(0x3F);   // 111111 = 0x3F
-   *gpfsel1 |= (0x24);      // 100100 = 0x24
+   *gpfsel1 &= ~(0x3F);   
+   *gpfsel1 |= (0x24);      
    
-   *spi_cs &= ~(0xFFFF);      // cs clear
+   *spi_cs &= ~(0xFFFF);     
    
    *spi_cs &= ~(0x01<<2);
-   *spi_cs &= ~(0x01<<3);      // spi(0,0)
-   *spi_cs |= (0x03<<4);      // clear FIFO
+   *spi_cs &= ~(0x01<<3);    
+   *spi_cs |= (0x03<<4);     
  
    return 0;
 }
    
-int sound_release(struct inode *inode, struct file *filp){
-   printk(KERN_ALERT "sound detection sensor driver closed!!\n");
+int smoke_release(struct inode *inode, struct file *filp){
+   printk(KERN_ALERT "smoke detection sensor driver closed!!\n");
 
    *gpfsel0 &= ~(0x1FF << 21);
-   *gpfsel1 &= ~(0x3F);      // 111111 = 0x3F
-   *spi_cs &= ~(0xFFFF);      // cs clear
+   *gpfsel1 &= ~(0x3F);     
+   *spi_cs &= ~(0xFFFF);     
    
    iounmap((void*)gpio_base);
    iounmap((void*)spi_base);
    return 0;
 }
 
-ssize_t sound_read(struct file* flip, char* buf, size_t count, loff_t* f_pos){
+ssize_t smoke_read(struct file* flip, char* buf, size_t count, loff_t* f_pos){
    printk(KERN_ALERT "read function called!!\n");
-   unsigned char spi_tData[3];
-   unsigned char spi_rData[3];
-   int tCount = 0; 
-   int rCount = 0;
+   unsigned char transmit_Data[3];
+   unsigned char receive_Data[3];
+   int transmit_Count = 0; 
+   int receive_Count = 0;
    
-   spi_tData[0] = 1;
-   spi_tData[1] = (0x08) << 4;
-   spi_tData[2] = 0;      // start single d2 d1 d0
+   transmit_Data[0] = 1;
+   transmit_Data[1] = (0x08) << 4;
+   transmit_Data[2] = 0;     
    
-   *spi_cs |= (0x03<<4);   // clear FIFO
+   *spi_cs |= (0x03<<4);  
    
-   *spi_cs |= (0x01<<7);      // TA = 1
-   
-   while((tCount < 3) || (rCount < 3)){
-      while((*spi_cs & (1<<18)) && (tCount < 3)){
-         *spi_fifo = spi_tData[tCount];
-         tCount++;
+   *spi_cs |= (0x01<<7);     
+
+   while((transmit_Count < 3) || (receive_Count < 3)){
+      while((*spi_cs & (1<<18)) && (transmit_Count < 3)){
+         *spi_fifo = transmit_Data[transmit_Count];
+         transmit_Count++;
       }
-      while((*spi_cs & (1<<17)) && (rCount < 3)){
-         spi_rData[rCount] = *spi_fifo;
-         rCount++;
+      while((*spi_cs & (1<<17)) && (receive_Count < 3)){
+         receive_Data[receive_Count] = *spi_fifo;
+         receive_Count++;
       }   
    }   
    
    while((!(*spi_cs)) & (1<<16));
    
-   *spi_cs |= (0x03<<4);   // clear FIFO
-   *spi_cs &= ~(1<<7);      // TA = 0
+   *spi_cs |= (0x03<<4);   
+   *spi_cs &= ~(1<<7);     
    
-   int data = ((spi_rData[1]&0x03)<<8) + spi_rData[2];
+   int data = ((receive_Data[1]&0x03)<<8) + receive_Data[2];
    
    printk(KERN_ALERT "reading input : %d \n", data);
    
@@ -103,32 +103,32 @@ ssize_t sound_read(struct file* flip, char* buf, size_t count, loff_t* f_pos){
    return count;
 }
 
-static struct file_operations sound_fops = {
+static struct file_operations smoke_fops = {
    .owner = THIS_MODULE,
-   .open = sound_open,
-   .release = sound_release,
-   .read = sound_read
+   .open = smoke_open,
+   .release = smoke_release,
+   .read = smoke_read
 };
 
-int __init sound_init(void){
-   if(register_chrdev(SOUND_MAJOR_NUMBER, SOUND_DEV_NAME, &sound_fops) < 0)
-      printk(KERN_ALERT "sound detection sensor initialization failed!!\n");
+int __init smoke_init(void){
+   if(register_chrdev(SMOKE_MAJOR_NUMBER, SMOKE_DEV_NAME, &smoke_fops) < 0)
+      printk(KERN_ALERT "smoke detection sensor initialization failed!!\n");
    else
-      printk(KERN_ALERT "sound detection sensor initialization success!!!\n");
+      printk(KERN_ALERT "smoke detection sensor initialization success!!!\n");
    return 0;
 }
 
-void __exit sound_exit(void){
-   unregister_chrdev(SOUND_MAJOR_NUMBER, SOUND_DEV_NAME);
-   printk(KERN_ALERT "sound detection sensor driver exit done!!!!");
+void __exit smoke_exit(void){
+   unregister_chrdev(SMOKE_MAJOR_NUMBER, SMOKE_DEV_NAME);
+   printk(KERN_ALERT "smoke detection sensor driver exit done!!!!");
 }
 
-module_init(sound_init);
-module_exit(sound_exit);
+module_init(smoke_init);
+module_exit(smoke_exit);
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("joreka");
-MODULE_DESCRIPTION("SOUND_DEV");
+MODULE_DESCRIPTION("SMOKE_DEV");
 
    
    
diff --git a/smoke/smoke_dev.ko b/smoke/smoke_dev.ko
index 2fadb110fb852d3b4e1c142cefc2024e2375733a..46ea2a6e2b6f38b6fe4b9dcccca4485527d6780e 100644
GIT binary patch
literal 7644
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

literal 7792
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
VP(Kh^U4R$^!&aCiH1B}a0RV+Xh*tmr

diff --git a/smoke/smoke_dev.mod.c b/smoke/smoke_dev.mod.c
index d04f78a..e70a193 100644
--- a/smoke/smoke_dev.mod.c
+++ b/smoke/smoke_dev.mod.c
@@ -44,4 +44,4 @@ __attribute__((section(".modinfo"))) =
 "depends=";
 
 
-MODULE_INFO(srcversion, "F5B0732CBA91D4A07D8535A");
+MODULE_INFO(srcversion, "194BCBE501BF825F76154FB");
diff --git a/smoke/smoke_dev.mod.o b/smoke/smoke_dev.mod.o
index 669c6428442bc6003a448dab9cdb9537b81b207a..e401880a933fd15ad1ef28a017eb706004b3f0fe 100644
GIT binary patch
delta 36
rcmca3c1LVOH<P%brHPZXldGwLp_7}1k*S-xnW3qPo73h+OuIM$%s~o{

delta 36
rcmca3c1LVOH<P%Vsgr@Zv5~WrqotvXiKBtJi-oDNspIBFOuIM$%qj|n

diff --git a/smoke/smoke_dev.o b/smoke/smoke_dev.o
index a174761702635ef788f2afb307fe80635a399421..cb7d48810a79fdddc6e5ef299873721e8ec8b187 100644
GIT binary patch
literal 6688
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

literal 7036
zcmb<-^>JflWMqH=Mg|QA1doB?k0@A%)dWmwFeov|Gw>c*@bJTJ-IpvId>#p0@O{Mc
zK=<jt|Nmbz1TZ{iaA0`M5a95b!NK7%!-EBn4IXemWiXifl&N6BLx~Afo-!sZc*xkW
z;IZZd@246D+)uR`ydN<b%zUcx!21!$fdvn>8@!(i7&Jd-Fz9?Lp)loXy}^UWS_a-v
z84M;pRRD`OfyF`m1{mL9%2OGEDNh*`CO>6l7kd2X|9>uq1C3853?O1m91t;xnu$*t
z6%IV%V+eT2aNvUI$N&GO!1|zSv;?A`GB7Ya)-(Xo4v!f{7CdB@VSL0a(D=|mfE(;j
zUV{Y>>unD|wl_HZn8RT5Qx=73kC+uM888?uFlJx~e$33kAjQV8;312`g2x5|-j6_G
z1M&+y!-9t(cSHP#@CV#qQ1>z@G(Xi)kOqevGegirMg|5cl?&dFKCGVm0%R6ADh7}M
z#lOJ~Nc_X&o`K;p0|O}D86Jb&m>{s=F$2Sb#|r$;U_K~4@PNb&7CdC+gov{!G(X}v
z(ENzOpyertLd#PPh2}>r1}#r{4zxTKP-p>%HH*QNr;KM7JeFW+dCDTt@Q6d9;gO6$
z%Ton~mZyx$3m${Qia}w)V-|raPemA7o-%>Mc;ZtgBTyP@e98ez7X}lbvVhYHf)5Gv
z#-{?HFh9@?O)Jgtw1q2<3|7p2fz|(@bPr1N&~N~S0RzJnupdOAG$=ek`dwx-Hg4F^
z+y;t5WHyKo#*7RMJPZsB9$<C*!Ro-`3=H7B#{dm`4&=NC3R?w+#|#Dxj~Nsk9y1s?
zJZ4bneOk-E;4!1l0!SP%1UzP7VA#ySz_6Hs!C^B4gTrEoI~P3Wx#0bXVa41RPGCD5
zaM}qni$P$)W01LEy9^wlW<%m1Y#t7CQc{bPi!uvJGV}9ni*xg{Q{z)oOHz|d7!pfM
zGV+UT13bJKax#-s^NLe#-2;3W7!8qCDFmnH73UWzq!eYAr4}jV7o_GXDsq9s1+Ti~
zoc!X{6tK#o)Z)^d5-ZhGE(Qje$z==-`0dHe%PdhyOU%qkO#xYk*DkQy;?m^g)Z*f_
z(j0>7lXFrN^GXZ27#Q50ovjo!f)a}hk}?zX6fE?N^$c{)w2KNd4K*P=21h*x28P7c
z#H36HMimAI23B)jM+P=7c1I3IP9`BH5k^r)ab^idNk%CqIVL6KG8_~}AdD==!tn7w
zNDPLVQA&LV24)6km=u_1W?%)=FoKzZje!@&0n=;@0$>_ONHRdG4j3O@KL>+6ObSeM
zfJqp^%)p5z&&i;~z`&pZQ@|jJW<Mi?Is*ek0FpeM$pG>XH=23e$kGhV3_NJ^pd5%$
z!py*jW*;Ae4ni7igBb$@LkwI@lEIpRfguBl@4&#oFa?PZXM%MLpxKWan#>G>X!3%{
z+8LM`gwfn5%;3tvz;FbvN)pZjF_;-d(ab}QEoKHWG<kGBGlLh%AO;4822dViU`A8V
z$`AyVX93Hzg2P6Hfq?<Whf0GfW(Em{R4|Ky0pwCf1__3G1_&DzQy@Ml>_90W6f+<`
zR5_SpW{^a)A7lzx3QRCFNP}q@!OS29V}faB1{sD`U>4Z13_=WS44Ytl1_p52K7__U
ziN?Q(#(x3gGcquM;vHn(XAmEXL9zQA%5Gp}U=U(pWMD?hpdfisG`<=d-yF(MU;ydo
zW3Y$vLB@jg2SWKU`B*3))Rq%s5N1e)@?q*Lp?sKp2O|T60yMq^8CV&57#SF3koXfB
z85ksx_){1m;RK3bkowusdJM*2#K^z^%H=TrN=8Upfblm#?T5JsQAq10GpHmo==nGs
zFzER>`Z;^}2N^J^q<};WL4*-p7|b;WiJ5>1QxIXs5bP44mS0fJkY13PAD@(1oXSvK
zkO^VL$A|iP28O!Ed%DCURZxaT49GH&8p_ZRMG#t785)4h2h~Rm@$u<-rSZAR`K5U!
z@p;J%1x1;8CD{y_`9-O@i3JSt@!;}1zBI2qGcP4Rxu77vpvVxUyC^j$738eU{L(y-
z%3zoHqSV9`hWPm6lEmcf_~eZ2`1I1mq7;V2qTKl8{DR8(lKlA6;?yD(C7^l=WE`j>
zVu+6~N=?r!E=etlPtGVxNiAal3CHK=r<CTTf>fneWR@_*$Cu`ztAo}{Fr~>k*$io!
zY55Gvpb$*XDKcP4FDOpUF@jKr5XyidKE5O)vlym}fdQ1)WlSJxMB5sYcC<MlX-dbM
zfdQ14bvPIp9xyO4X!A2LfbxqDKLf)b1_lNhQw9bDP<pdrV5kAnwxCqOz`*1UNkdFl
z3=E)j%4E#IV8g(`z+?eQdm#Hj_G+_3?A2jMwHItI$b2)1evtj3GFrxrfk6Odj|l^V
z2qOan$ej|53=AN784#bBfk6Sp=Vf3}0jV=(V9){4mJAFgP#WYyEm$>Y4oTZuoDlbd
z#6jg2h!0lB1R@z27+~rI5a9*NW7=YnaMBishLaei?$Z%xV6XtW-yTw~XiG3KxPZb>
zl7Yd4fq_9sf`P#YL`y>ILXdw!HfezZ1;l{aCj|)~koh3{K<0w-x{MRVK5Yf4eF_ZV
zdJb-m9LNwPcPlb5Fz6Lm=9VNTG3XVS6hY_=7^^5XN3SHcqJ%*Y#7aplNo3GVDlUd_
zK@xhUc{!QcsX3JldX7Q9dZ`s9iAi7`ND?5e5XsDx3Uo<`1lU>>br35+Ngk{N*?1&D
z6fJsa5}*u%p&3aKRWp)AZhlH;URpkbUQs^C%b;*E)H7kwOU}>DP0cG|(96p&N!4@r
z3)KZ@Z;0CxOG=6|lS)fci=jbG3<YXKfr?EwsA5o_0M#c@F1W4*u|c&TCj%tSfcP;y
zkn|x7sqVn)KxMNgln-nDZDEAe?;t%O3@WQZv?>Dw1G0H*cp&K&WFAN_NFB&LeFjMS
z2Z@37nJ_`p7l;kQAax)*5Na>nA507k4j_+#B%yT-hzar^vb|?`AnpU%3(^ZR4`i=9
z)I3-=D`AGDcaRw%3{nT8Qy}UJnm`-|28JGHNI3#B3nT<n2dYDn?e*b><PVU&AaRg7
zkiE4K^B7?E&S8f1<v?bEFi0JU?t!R-+q;4p5>7BL!_;-4g>wln#2+AgLFEZZ9mw7d
z5c3#d?%u%6zyNYH$Sx2DsRPl|(ah`NWnhS4U|;~5#|I5(ka^3X=E3|Sz=GW$`yuM!
z{*YmT_yc4X$Ud08yV2}@g5(cSOBSRKWba#ud2oNIut3UbkXaxMQU{{1pqclFmw~|m
z>JMQge}Fo?pfH8`BLas%Ky?ly0|VS2DNuia%mUd5v-by@y*hk|_z**~SCEl`0omRh
z7Kr;mW`QtB4n#{q)fs^}3=9l&SQr>yLD?V*WG_gqCR82Bk09|jR@8h1QUk(9P<0?R
zAiN4zAAvZ~umv%l7(sm^h5`^9ghA>+c@@M4VUSrc8WwgS{vB2Zh65}N44`Vj80ue8
zTN9KAV0j#*ZVnd%!#<cHNcMu_8d=>85e9~2Eb2z<lnPK?N5wh?Q~}4s+NL@A$)H#w
z4v*F`qje0ZY#yy+AZ0kHt_0N!pt2bhE~9k}YB>Tc&IfxP69%m-VfCAjG^FhZ^9?9|
zK{$vJ($<BE$4DdEx}ZK2NDU|*fVx<qx)9Wl1hGNtnV2B`Kqgj5y9h*s+HFiC3=9C^
C0x6LI

diff --git a/test b/test
deleted file mode 100755
index 7a5f96a9ed807a26fd8e8097010eb0832f51d74b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8528
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

diff --git a/test.c b/test.c
deleted file mode 100644
index ec7f65a..0000000
--- a/test.c
+++ /dev/null
@@ -1,125 +0,0 @@
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <errno.h>
-#include <time.h>
-#include <arpa/inet.h>
-
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/sysmacros.h>
-
-#define SMOKE_DEV_PATH         "/dev/smoke_dev"
-#define BUZZER_DEV_PATH		"/dev/buzzer_dev"
-#define HYDRO_DEV_PATH		"/dev/hydro_dev"
-
-#define IOCTL_HYDRO_MAGIC_NUMBER	'h'
-
-#define INTERVAL         50000
-#define BUFF_SIZE	 50
-
-typedef struct{
-	int hydro_int;
-	int hydro_double;
-	int temp_int;
-	int temp_double;
-}HYDRO;
-
-#define IOCTL_CMD_HYDRO			_IOR(IOCTL_HYDRO_MAGIC_NUMBER, 0, HYDRO)
-int main(void)
-{
-   int client_socket;
-   struct sockaddr_in server_addr;
-   char buff[BUFF_SIZE+5] = "Humidity:";
-   char buff2[BUFF_SIZE+5] = "Temperature";
-
-   client_socket = socket(PF_INET, SOCK_STREAM, 0);
-   if(client_socket == -1) {
-	   printf("socket fail\n");
-	   exit(1);
-   }
-
-   memset(&server_addr, 0, sizeof(server_addr));
-   server_addr.sin_family = AF_INET;
-   server_addr.sin_port = htons(4015);
-   server_addr.sin_addr.s_addr = inet_addr("192.168.0.9");
-
-   if(connect(client_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
-	   printf("connect error\n");
-	   return 1;
-   }
-  
-   int smoke_dev, smoke_data;
-   int buzzer_dev, buzzer_data = 400;
-   int hydro_dev;
-   HYDRO hydro_info;
-   char Temp[20], Hum[20]; 
-   smoke_dev = open(SMOKE_DEV_PATH, O_RDONLY);
-   buzzer_dev = open(BUZZER_DEV_PATH, O_RDWR);
-   hydro_dev = open(HYDRO_DEV_PATH, O_RDONLY);
-   
-   if(smoke_dev < 0) {
-	   printf("fail to open smoke detection sensor device\n");
-	   return 1;
-   }
-
-   if(buzzer_dev < 0) {
-	   printf("fail to open buzzer sensor device\n");
-	   return 1;
-   }
-
-   if(hydro_dev < 0) {
-	   printf("fail to open hydro sensor device\n");
-	   return 1;
-   }
-
-   int count = 0;
-   
-   
-
-   while(1) {
-	   read(smoke_dev, &smoke_data, sizeof(int));
-	   printf("data : %d\n", smoke_data);
-	   if(smoke_data > 600) {
-		   write(buzzer_dev, &buzzer_data, sizeof(int)*2);
-	   }
-	   sleep(1);
-	   while(1) {
-	       ioctl(hydro_dev, IOCTL_CMD_HYDRO, &hydro_info);
-	       printf("temperature is %d.%d%%, humidity is %d.%d%%\n",hydro_info.temp_int, hydro_info.temp_double, hydro_info.hydro_int, hydro_info.hydro_double);
-
-	       if(hydro_info.temp_double > 100)
-		    hydro_info.temp_double /= 100;
-	       else if(hydro_info.temp_double > 10)
-		       hydro_info.temp_double /= 10;
-
-	       if(hydro_info.hydro_double > 100)
-		       hydro_info.hydro_double /= 100;
-	       else if(hydro_info.hydro_double > 10)
-		       hydro_info.hydro_double /= 10;
-
-	       sprintf(Temp, "%d.%dC", hydro_info.temp_int, hydro_info.temp_double);
-	       sprintf(Hum, "%d.%d%%", hydro_info.hydro_int, hydro_info.hydro_double);      
-	       printf("%s %s\n", Temp, Hum);
-	       strcat(buff, Hum);
-	       strcat(buff2, Temp);
-	       write(client_socket, buff2, strlen(buff2) + 1);
-	       write(client_socket, buff, strlen(buff) + 1);
-	       printf("%s %s\n", Temp, Hum);
-	       sleep(1);
-	       if(hydro_info.temp_int != 0)
-		  break;
-	    }
-   }
-   
-   close(client_socket);
-   close(smoke_dev);
-   close(buzzer_dev);
-   close(hydro_dev);
-   
-   return 0;
-}
-- 
GitLab