|
From: johann d. <jd...@us...> - 2001-10-07 19:25:45
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input
In directory usw-pr-cvs1:/tmp/cvs-serv30438
Modified Files:
Tag: iforce-split
iforce-ff.c
Log Message:
iforce_upload_* now return the correct value.
Index: iforce-ff.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/Attic/iforce-ff.c,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- iforce-ff.c 2001/10/07 17:06:49 1.1.2.1
+++ iforce-ff.c 2001/10/07 19:25:43 1.1.2.2
@@ -41,6 +41,8 @@
{
unsigned char data[3];
+ printk(KERN_DEBUG "iforce: in make_magnitude_modifier\n");
+
if (!no_alloc) {
down(&iforce->mem_mutex);
if (allocate_resource(&(iforce->device_memory), mod_chunk, 2,
@@ -350,25 +352,27 @@
struct iforce_core_effect* core_effect = iforce->core_effects + core_id;
struct resource* mod1_chunk = &(iforce->core_effects[core_id].mod1_chunk);
struct resource* mod2_chunk = &(iforce->core_effects[core_id].mod2_chunk);
- int err = 1;
+ int param1_err = 1;
+ int param2_err = 1;
+ int core_err = 0;
if (!is_update || need_period_modifier(iforce, effect)) {
- err = make_period_modifier(iforce, mod1_chunk,
+ param1_err = make_period_modifier(iforce, mod1_chunk,
is_update,
effect->u.periodic.magnitude, effect->u.periodic.offset,
effect->u.periodic.period, effect->u.periodic.phase);
- if (err) return err;
+ if (param1_err) return param1_err;
set_bit(FF_MOD1_IS_USED, core_effect->flags);
}
if (!is_update || need_shape_modifier(iforce, effect)) {
- err = make_shape_modifier(iforce, mod2_chunk,
+ param2_err = make_shape_modifier(iforce, mod2_chunk,
is_update,
effect->u.periodic.shape.attack_length,
effect->u.periodic.shape.attack_level,
effect->u.periodic.shape.fade_length,
effect->u.periodic.shape.fade_level);
- if (err) return err;
+ if (param2_err) return param2_err;
set_bit(FF_MOD2_IS_USED, core_effect->flags);
}
@@ -382,7 +386,7 @@
}
if (!is_update || need_core(iforce, effect)) {
- err = make_core(iforce, effect->id,
+ core_err = make_core(iforce, effect->id,
mod1_chunk->start,
mod2_chunk->start,
wave_code,
@@ -397,7 +401,13 @@
printk(KERN_DEBUG "iforce.c: no effect packet was needed\n");
}
- return err;
+ /* If one of the parameter creation failed, we already returned an
+ * error code.
+ * If the core creation failed, we return its error code.
+ * Else: if one parameter at least was created, we return 0
+ * else we return 1;
+ */
+ return core_err < 0 ? core_err : (param1_err && param2_err);
}
/*
@@ -413,31 +423,33 @@
struct iforce_core_effect* core_effect = iforce->core_effects + core_id;
struct resource* mod1_chunk = &(iforce->core_effects[core_id].mod1_chunk);
struct resource* mod2_chunk = &(iforce->core_effects[core_id].mod2_chunk);
- int ret = 1;
+ int param1_err = 1;
+ int param2_err = 1;
+ int core_err = 0;
printk(KERN_DEBUG "iforce.c: make constant effect\n");
if (!is_update || need_magnitude_modifier(iforce, effect)) {
- ret = make_magnitude_modifier(iforce, mod1_chunk,
+ param1_err = make_magnitude_modifier(iforce, mod1_chunk,
is_update,
effect->u.constant.level);
- if (ret) return ret;
+ if (param1_err) return param1_err;
set_bit(FF_MOD1_IS_USED, core_effect->flags);
}
if (!is_update || need_shape_modifier(iforce, effect)) {
- ret = make_shape_modifier(iforce, mod2_chunk,
+ param2_err = make_shape_modifier(iforce, mod2_chunk,
is_update,
effect->u.constant.shape.attack_length,
effect->u.constant.shape.attack_level,
effect->u.constant.shape.fade_length,
effect->u.constant.shape.fade_level);
- if (ret) return ret;
+ if (param2_err) return param2_err;
set_bit(FF_MOD2_IS_USED, core_effect->flags);
}
if (!is_update || need_core(iforce, effect)) {
- ret = make_core(iforce, effect->id,
+ core_err = make_core(iforce, effect->id,
mod1_chunk->start,
mod2_chunk->start,
0x00,
@@ -452,7 +464,13 @@
printk(KERN_DEBUG "iforce.c: no effect packet was needed\n");
}
- return ret;
+ /* If one of the parameter creation failed, we already returned an
+ * error code.
+ * If the core creation failed, we return its error code.
+ * Else: if one parameter at least was created, we return 0
+ * else we return 1;
+ */
+ return core_err < 0 ? core_err : (param1_err && param2_err);
}
/*
@@ -465,7 +483,8 @@
struct resource* mod_chunk = &(core_effect->mod1_chunk);
u8 type, axes;
u16 mod1, mod2, direction;
- int err = 1;
+ int param_err = 1;
+ int core_err = 0;
printk(KERN_DEBUG "iforce.c: make interactive effect\n");
@@ -476,7 +495,7 @@
}
if (!is_update || need_interactive_modifier(iforce, effect)) {
- err = make_interactive_modifier(iforce, mod_chunk,
+ param_err = make_interactive_modifier(iforce, mod_chunk,
is_update,
effect->u.interactive.right_saturation,
effect->u.interactive.left_saturation,
@@ -484,7 +503,7 @@
effect->u.interactive.left_coeff,
effect->u.interactive.deadband,
effect->u.interactive.center);
- if (err) return err;
+ if (param_err) return param_err;
set_bit(FF_MOD1_IS_USED, core_effect->flags);
}
@@ -526,7 +545,7 @@
}
if (!is_update || need_core(iforce, effect)) {
- err = make_core(iforce, effect->id,
+ core_err = make_core(iforce, effect->id,
mod1, mod2,
type, axes,
effect->replay.length, effect->replay.delay,
@@ -534,5 +553,11 @@
direction);
}
- return err;
+ /* If the parameter creation failed, we already returned an
+ * error code.
+ * If the core creation failed, we return its error code.
+ * Else: if a parameter was created, we return 0
+ * else we return 1;
+ */
+ return core_err < 0 ? core_err : param_err;
}
|